정의서브클래스는 언제나 자신의 기반타입 즉, 슈퍼클래스로 교체될 수 있어야한다.잘못된 예시 : 아버지와 딸아버지를 슈퍼 클래스를 두고 서브 클래스로 딸을 두는 경우분류도가 아니라, 계층도 혹은 조직도에 가깝다.아버지 춘향이 = new 딸()아버지가 할 수 있는 일을 딸이 무조건 수행할 수 있는 것이 아니다.올바른 상속 : 동물과 펭귄동물 뽀로로 = new 펭귄()리스코프 치환 원칙을 잘 지키는 예시펭귄은 동물의 하위분류동물이 할 수 있는 모든 행위를 펭귄도 할 수 있음.인터페이스의 중요성명칭과 그 존재로서 → 리스코프 치환 원칙을 지키는데 도움을 줌AutoCloseable → 자동으로 닫을 수 있음Appendable → 덧붙일 수 있음등으로, 어떤 클래스가 특정 인터페이스를 구현할 때, 그 인터페이스가 ..
인터페이스 분리 원칙 (interface Segregation Principle)정의클라이언트는 자신이 사용하지 않는 메서드에 의존하면 안된다하나의 인터페이스가 너무 많은 기능을 가지게 되면, 그 기능을 모두 사용하지 않는 클라이언트가 있는 경우 불필요한 의존성이 생김.ISP와 단일 책임 원칙(SRP)ISP(인터페이스 분리 원칙) 와 SRP(단일 책임 원칙) 은 둘다 클래스 or 객체가 가져야할 책임과 역할을 구분하는 데 중점을 둠.SRP하나의 클래스가 하나의 책임만!ISP인터페이스를 통해 여러 책임을 분리예제남자 클래스 가 남자친구, 아들 , 사원, 소대원 등의 역할을 가진다고 가정다양한 책임을 가지는 것은 단일 책임 원칙에 어긋남.단일 책임 원칙 적용남자 클래스를 여러 개의 클래스로 분화한다.각 클래..
의존 역전 원칙 (Dependency Inversion Principle)정의고차원의 모듈이 저찬원의 모듈에 직접 의존하는 것을 피해야함주요 내용의존 역전 원칙의 주장고차원 모듈은 저차원의 모듈에 의존X추상화된 것은 구체적인 것에 의존 X구체적인 것이 추상화된 것에 의존이 두 모듈은 모두 다른 추상화된 것에 의존예시자동차가 구체적인 스노우 타이어에 의존하는 관계스노우 타이어는 계절에 따라 일반 타이어로 교체될 수 있음자동차는 자주 바뀔 가능성이 있는 스노우 타이어에 의존하는 문제점자동차가 구체적인 타이어들 ( 스노우, 일반, 광폭 ) 에 직접 의존하는 대신 추상화된 타이어 인터페이스에만 의존의존 역전 원칙의 장점 및 특징변화의 영향 최소화추상화된 인터페이스나 슈퍼 클래스를 통해 변화가 잦은 구체적인 요소..
개요OOP 와 SOLID 원칙은 밀접한 관계캡상추다 4대 특성을 이해하면 SOLID 가 자연스럽게 적용됨.SOC (Seperation Of Concerns)관심사의 분리SOLID 원칙과 밀접한 관계같은 관심사는 하나의 객체나 친한 객체로 게더링다른 관심사는 분리SRP , ISP , COP 같은 SOLID 가 자연스럽게 적용SOLIDSRP (단일 책임 원칙) : 하나의 클래스는 하나의 책임OCP ( 개방 폐쇄 원칙) : 코드는 확장에 열려있고, 수정 닫혀있음LSP ( 리스코프 치환 원칙) : 서브 클래스는 슈퍼 클래스로 대체가 가능해야함ISP ( 인터페이스 분리 원칙) : 클라이언트는 자신이 사용하지 않는 메서드에 의존하면 XDIP ( 의존 역전 원칙 ) : 상위 모듈은 하위 모듈에 의존 XSOLID 장점..
객체 지향의 4대 특성과 도구의 사용개요객체 지향의 4대 특성캡슐화상속다형성추상화이러한 특성은 프로그래밍에서 사용하는 '도구'와 유사함그 사용법을 잘 알아야만 효과적인 프로그래밍이 가능합니다.비유객체 지향의 4대 특성을 요리의 불, 물, 칼 등의 주방 도구에 비유할 수 있다.도구를 올바르게 사용하지 않으면, 예를 들어 칼 대신 물의 수압을 이용해 과일을 자르려고 한다면, 그 효율은 매우 떨어질 것이다.따라서 도구를 올바르게 사용해야 함SOLID 원칙의 등장 및 필요성개요SOLID 원칙은 객체 지향 프로그래밍에서 좋은 설계를 위한 기본 원칙 5가지를 말한다.SRP, OCP, LSP, ISP, DIP의 머리글자를 따서 ⇒ SOLID5가지 원칙SRP(Single Responsibility Principle):..
단일 책임 원칙 (Single Responsibility Principle)1. 정의하나의 클래스는 하나의 책임만 가져야 한다는 것이 핵심2. 속성이 단일 책임 원칙을 지키지 못하는 경우: '사람' 클래스 예시public class Main{ public static void main(String[] args) { 사람 로미오 = new 사람(); 사람 줄리엣 = new 사람(); 로미오.군번 = "129301203012"; } public static class 사람 { String 군번; } }2.1 문제점사람 클래스에서는 군번이라는 속성이 모든 사람, 즉 남자와 여자 모두에게 적용됨하지만 이 경우 남자와 여자의 책임이 명확하게 구분되어 있지 않기 때문에 문제가 생깁니다.2.2 해결 방안남자와 여자 ..