소프트웨어를 구현할 때 데이터와 데이터를 조작하는 코드를 작성하는 방식이다흔히 프로시저(procedure) 로 프로그램을 구성하는 기법을 절차 지향 프로그래밍 이라고 한다.그림과 같이 프로시저는 여러 데이터를 공유한다.또한 프로시저들끼리는 서로를 사용할 수 있다.코드를
객체는 데이터와 그 데이터를 조작하는 프로시저(오퍼레이션, 메서드, 함수) 로 구성된다.객체의 물리적인 특성일뿐… 객체의 본질을 정의하지 않는다고 한다.객체는 제공하는 기능으로 정의된다.내부적으로 어떤 데이터를 가지고 있는지는 중요하지 않고어떤 기능을 제공하는가 가 중
한 객체가 다른 객체를 사용하는 관계를 말한다.자동차가 엔진을 사용하는 경우 , 자동차는 엔진에 의존한다고 말할 수 있다.위 코드에서 객체생성과 메서드 호출부가 일렬로 서있다.혹시 차이점이 보이는가?바로..파라미터를 통한 의존성 구현해당 방식은 매개변수에 아예 사용될
OOP 핵심 원칙중에 하나이다.객체의 내부 구현을 외부로부터 숨기는 기법이다.객체 지향 프로그래밍은 코드의 유지보수성 + 재사용성을 향상시킨다.정의캡슐화(encapdulation)객체가 내부적으로 기능을 어떻게 하는지 감춤왜?내부 구현 변경의 유연함을 제공하기 위함이다
객체 지향 설계 자체는 반복적이고 점진적인 과정임.식별객체 할당캡슐화객체 간의 통신 설계를 포함한다기능 식별 및 객체의 할당제공해야 할 기능을 탐색하고 세분화한다.식별된 기능을 적절한 객체에 할당한다때로는 데이터를 먼저 추가하고, 그 데이터를 이용하는 기능을 넣을 수도
한 객체가 여러 가지(poly) 모습(morph) 를 갖는 것모습 이란 타입 을 의미한다하나의 객체가 여러 타입을 가질 수 있는 것을 의미한다.중앙의 객체는 타입 A, 타입 B, 타입 C 에 정의된 인터페이스의 구현을 제공한다.다른 코드에서는 해당 객체에 대해 타입 A
데이터나 프로세스 등을 의미가 비슷한 개념이나 표현으로 정의하는 과정FTP 파일 다운로드소켓에서 데이터 읽기DB 테이블의 데이터 조회로그 수집이라는 추상적 개념으로 정의가 가능함.CS 에서 추상화는 광범위하게 사용되고, 타입도 추상화의 대상이 됨.오퍼레이션 시그니처만
추상 타입과 실제 구현 클래스 자체는 상속을 통해 연결된다.구체적으로, 구현 클래스가 추상 타입을 상속받는 방식으로 둘을 연결함LogColletor 라는 추상 타입을 FtpLogFileDownloader, SocketLogReader, DbTableLogGateway라
구상 클래스를 사용해도 문제가 없어 보인다.왜 추상 타입을 사용하는가?문제가 없어보임 ㅎ..과연..지금은 단순하게 파일을 읽어서 암호화 → 암호화된 데이터 → 파일로 쓰기이렇게 구성이 되어 있습니다.새로 클래스를 만들게 되겠죠SocketDataReader 를 만들고 조
상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.SuperClass 의 someMethod 가 항상 양의 정수 반환그러나SubClass 의 someMethod 가 항상 음의 정수 반환하위 클래스의 메서드는 Sup
인터페이스는 해당 인터페이스를 사용하는 클라이언트를 기준으로 분리 한다.Java 와 같은 컴파일 타임에 의존성을 관리하는 언어에서 특히 중요하다고 합니다.해당 원칙이 지켜지지 않는다면, 불필요한 의존성때문에코드의 유연성이 떨어지고유지보수가 어려워집니다.시나리오자바로 게
모든 동작을 하나의 클래스에서 직접 포함하면 유지 보수가 어려움.전략 패턴은 알고리즘을 별도의 클래스로 캡슐화하여 유연성을 제공.OCP 원칙에 따라 확장에 열려있고 수정엔 닫혀있는 구조를 만들 수 있음.한 과일 매장에서 특정 조건에 따라 다른 가격 할인 정책을 적용하고