전체 글
1.3.2.3. 관계(집합 관계)
JAVA 객체지향 디자인 패턴 정리 UML 연관 관계의 특별 경우로 전체와 부분의 관계를 명확하게 명시하고자 할 때 사용한다. 1. 집약 관계(aggregation) 한 객체가 다른 객체를 포함하는 것 '부분'을 나타내는 객체를 다른 객체와 공유할 수 있다. '전체'를 가리키는 클래스 방향에 빈 마름모로 표시 전체 객체의 라이프타임과 부분 객체의 라이프타임은 독립적이다. 전체 객체가 메모리에서 사라진다 해도 부분 객체는 사라지지 않는다. // Ex) 생성자에서 참조값을 인자로 받아 필드를 세팅한다. public class Computer { private MainBoard mb; private CPU c; //생성자 public Computer(MainBoard mb, CPU c) { this.mb = ..
1.3.2.2 관계(일반화 관계)
JAVA 객체지향 디자인 패턴 정리 2. 일반화 관계 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 두 클래스 사이에는 일반화 관계가 존재한다. 객체 지향 개념에서는 일반화 관계를 상속 관계("is a kind of" 관계)라고 한다. 부모 클래스 추상적인 개념 (실제로 존재하지 않는다.) 삼각형 표기사 있는 쪽 가전 제품 자식 클래스 구체적인 개념 삼각형 표시가 없는 쪽 세탁기, TV, 식기 세척기 '세탁기'is a kind of '가전제품' 'TV' is a kind of '가전 제품' '식기 세척기' is a kind of '가전 제품' 부모 클래스는 자식 클래스의에게 공통 속성이나 연산을 제공하는 틀이다. 추상 클래스 추상 메소드를 하나 이상 가지는 클래스 추상 메소드 부모 클래스에서 구현되..
1.3.2.1 관계(연관 관계)
JAVA 객체지향 디자인 패턴 정리 UML에서 제공하는 클래스들 사이의 관계 1. 연관 관계 가령 "교수 (Professor 클래스)가 학생 (Student 클래스)을 상담한다."라는 사실은 밑의 그림처럼 나타낸다. 한 클래스가 다른 클래스와 연관 관계를 가지면 각 클래스의 객체는 해당 연관 관계에서 어떤 역할을 수행하게 된다. 두 클래스 사이의 연관 관계가 명확한 경우에는 연관 관계 이름을 사용하지 않아도 된다. 역할 이름은 실제 프로그램을 구현할 때 연관된 클래스의 객체들이 서로를 참조할 수 있는 속성의 이름으로 활용할 수 있다. 연관 관계는 방향성을 가질 수 있다. 양방향은 실선, 단방향은 화살표로 표시한다. 화살표 단방향 연관 관계 한 쪽은 알지만 다른 쪽은 상대방의 존재를 모른다. 사람(Pers..
1.3 클래스 다이어그램
JAVA 객체지향 디자인 패턴 정리 클래스 다이어그램은 시간에 따라 변하지 않는 시스템의 정적인 면을 보여주는 UML 구조 다이어그램이다. 클래스 다이어그램은 시스템을 구성하는 클래스와 그들 사이의 관계를 보여준다. 클래스 다이어그램 = 클래스 + 관계 1.3.1 클래스 클래스(Class)란 동일한 속성과 행위를 수행하는 객체의 집합 객체를 생성하는 설계도 즉, 클래스는 공통의 속성과 책임을 갖는 객체들의 집합이자 실체 객체를 생성하는 설계도이다. 클래스는 "변화의 기본 단위" 디자인 패턴을 제대로 이해하려면 만들어진 프로그램을 흔들어보고 어떤 것이 변화되는지를 잘 살펴봐야 한다. UML 클래스 표현 가장 윗부분 : 클래스 이름 중간 부분 : 속성(클래스의 특징) 마지막 부분 : 연산(클래스가 수행하는 ..
1.2 UML
JAVA 객체지향 디자인 패턴 정리 모델링(Modeling)을 하려면 시스템을 모델로 표현해주는 언어가 필요하다. 이에 대표적인 모델링 언어로 UML( Unified Modeling Language )이 있다. UML은 요구 분석, 시스템 설계, 시스템 구현 등의 시스템 개발 과정에서 개발자 사이의 의사 소통이 원활하게 이루어지도록 표준화한 통합 모델링 언어다. ▲ UML 다이어그램의 종류 현재 UML 2.0에서는 시스템의 구조(structure)와 동작(behavior)을 표현하는 13갸의 다이어그램을 제공하며, 다양한 과점에서 시스템을 모델링할 수 있다. (ex. 건축 설계 도면)
1.1 모델링
JAVA 객체지향 디자인 패턴 정리 모델의 역할 서로의 해석을 공유해 합의를 이루거나 해석의 타당성을 검토한다. 현재 시스템 또는 앞으로 개발할 시스템의 원하는 모습을 가시화한다. 시스템의 구조와 행위를 명세할 수 있으며 시스템을 구축하는 틀과 구축된 SW의 문서화 기능을 제공한다. 모델은 추상화(abstraction)에 바탕을 두고 만들어진다. 추상화는 대상을 표현할 때 특정 관점에서 관련이 있는 점은 부각시키고 관련이 없는 면은 무시하는 작업이 필요하다. 각 개체의 구체적인 개념에 의존하지 말고 추상적 개념에 의존해야 설계를 유연하게 변경할 수 있다.
탐욕법(Greedy Algorithm)
이것이 코딩 테스트다 with 파이썬 정리 및 추가 내용 Greedy Algorithm이란? 그리디 알고리즘(욕심쟁이 알고리즘, Greedy Algorithm)이란 "매 선택에서 지금 이 순간 당장 최적인 답을 선택하여 적합한 결과를 도출하자"라는 모토를 가지는 알고리즘 설계 기법이다. 예를 들어 5개의 도시를 모두 한번씩만 거쳐서 여행하는 경로 중 기름값을 아끼기 위해 가능하면 짧은 경로를 이용하고 싶다고 가정하자. 이 문제를 해결하기 위해 몇 가지 전략을 사용할 수 있다. 가능한 120가지의 조합을 모두 살펴봐서 그중 가장 짧은 경로를 선택하는 것도 하나의 전략이 될 것이다. 그러한 다양한 방법 중, 그리디 알고리즘을 사용한다는 것은 "지금 내가 있는 도시에서 고를 수 있는 도로 중 가장 짧은 도로를..
시간 복잡도와 Big-O 표기
원문은 해당 페이지로 이동 알고리즘이란? Algorithm is a series of contained steps which you follow in order to achieve some goal, or to produce some output 알고리즘은 어떤 목적을 달성하거나 결과물을 만들어내기 위해 거쳐야 하는 일련의 과정들을 의미합니다. 삼성역에서 택시를 타고 강남역으로 향했는데 30분 걸렸다. 구글에서 알려주는 최단경로로 갔더라면 15분 내에 도착할 것이다. 레스토랑을 예약해서 가는 경우라던지 친구와 약속시간을 잡은 경우 우리에게는 시간은 항상 소중하다. 그래서 우리는 시간을 효율적으로 사용하기 위한 노력을 의식적으로 하고 있다. 컴퓨터 프로그래밍에서도 시간복잡도가 가장 낮은 알고리즘을 채택해 ..
[ML] Machine Learning 이란?
글을 작성하기에 앞서 앞으로의 ML 관련 내용은 Deep Learning에 입문하기 위한 최소한의 지식을 작성하는 것을 우선 목표로 합니다. 1. 머신러닝(Machine Learning) 머신 러닝에 관련된 대표적인 인용문이 있다. Machine Learning : Fied of study that gives computers the ability to learn without being explicitly programmend. - Arthur Samuel(1959) 1950년, 아서 사무엘은 기계 학습은 "명시적으로 프로그램을 작성하지 않고 컴퓨터에 학습할 수 있는 능력을 부여하기 위한 연구 분야" 라고 정의하였다. 뭐 위의 정의만 보면 컴퓨터에게 학습 능력을 부여하는 것이라고는 하지만 정확히 뭘 어..