목록삶../프로그래밍 (41)
오늘이군
※ 추천 글 https://www.youtube.com/watch?v=nrlHZBAXjv8&t=3894s 49분~ https://www.youtube.com/watch?v=AeyUpM3A2zo 1. DIP (Dependency Inversion Principle) : 의존 역전의 원칙 가. 설명 고차원모듈은 저차원모듈에 의존하면 안된다. 이 두 모듈 모두 다른 추상화된 것에 의존해야 한다 추상화된 것은 구체적인 것에 의존하면 안된다. 구체적인 것이 추상화 된 것에 의존 (의존의 역전)해야 한다. 자주 변경되는 구체(Concrete) 클래스에 의존하지 마라. 나. 적용 전 (겨울이 지나면? 눈이 안오면? 난감하다) class 자동차 { 스노우타이어 st = new 스노우타이어(); } 자동차는 자신보다 변..
※ 추천 글 https://www.youtube.com/watch?v=nrlHZBAXjv8&t=3894s 41분~ http://blog.naver.com/zxy826/220888878122 1. ISP (Interface Segregation Principle) : 인터페이스 분리의 원칙 가. 설명 "클라이언트는 자신이 사용하지 않는 메서드에 의존관계를 맺으면 안된다" - 로버트 C.마틴 나. 예시 1) 적용전 2) 적용후 책임을 분리하는 관점에서 SRP 와 유사하며외부 라이브러리 등 수정이 불가능한 상황에서는 ISP 를 적용하고, 직접 수정이 가능한 경우는 SRP 가 더 유리합니다.
※ 추천 글 https://www.youtube.com/watch?v=nrlHZBAXjv8&t=3894s 39분~ http://blog.naver.com/ruzicka/220794452970 1. LSP (Liskov Substitution Principle) : 리스코프 치환의 원칙 가. 설명 "서브타입은 언제나 자신의 기반타입 (base type) 으로 교체할 수 있어야 한다" - 로버트 C.마틴 나. 필요조건 1) 하위클래스 is a kind of 상위클래스 동물 animal = new 개(); animal.cry(); 상위클래스에 하위클래스 객체를 대입해 사용해도 프로그램은 정상적으로 동작해야 한다. 2) 구현클래스 is able to 인터페이스 다. 위반시 문제점 1) 하위클래스 객체를 파라미터..
※ 추천 글 https://www.youtube.com/watch?v=nrlHZBAXjv8&t=3894s 27분~ http://mckdh.net/554 1. OCP (Open Closed Principle) : 개방폐쇄의 원칙 가. 설명 "소프트웨어 엔티티(클래스, 모듈, 함수 등) 는 확장에 대해서는 개방돼야 하지만 변경에 대해서는 폐쇄돼야 한다" - 로버트 C.마틴 데이터베이스가 오라클에서 MySQL로 바뀐다고 해도 Connection을 설정하는 부분 외에는 따로 수정 할 필요가 없다. 기존 개발된 기능의 변경 건이 있거나 새로운 기능 확장을 해야하는 경우, 기존 클래스 내부코드를 변경하는 방법은 기존의 소스를 사용하는 모든 클래스의 정상적인 작동이 위태롭게 된다. 이 때 기존의 클래스를 최대한 수정..
※ 추천 글 https://www.youtube.com/watch?v=nrlHZBAXjv8&t=3894s http://mckdh.net/553 1. SRP (Single Responsibility Principle) : 단일 책임의 원칙 가. 설명 "어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다." - 로버트 C. 마틴 나. 검증 다. 리팩토링
※ 추천 글 https://www.youtube.com/watch?v=JDQke4tIUPE&t=2262s http://mckdh.net/549 1. 다형성 가. overriding : 메소드 재정의 (상속과 긴밀한 관계가 있다.) 하위클래스가 상위 클래스의 기능을 재정의하고 코딩에서는 이를 신경쓰지 않고 호출 가능 public class 동물 { public void showName() { print("안녕 난 동물"); } } public class 펭귄 extends 동물 { // 메소드 재정의 public void showName() { print("어머 난 펭귄"); } } 동물 pororo = new 펭귄(); pororo.showName(); 결과는?? 어머 난 펭귄 ※ 펭귄에서 정의한 sho..
※ 추천 글 https://www.youtube.com/watch?v=cHOVQdNGcfY&t=453s http://blog.naver.com/skel_guitar/60045774289 1. 추상화 가. 설명1 갑돌이 와 갑순이는 회사에 근무한다고 보자. 이들을 통틀어서 이야기 할때에는 회사원이라고 이야기 한다. 회사원은 실존하는 특정 개체가 아니라 회사에 다니는 사람들이 가지고 있는 공통적인 특성을 추상적으로 나타내는 명사이다. 이는 바로 객체를 클래스화하는 원리와 동일하다. 나. 설명2 이 글을 쓰고 있는 저는 객체 입니다. - 세상에 존재하고요 - 고유하고 - 성별이 남자라는 속성 등이 있고 - 프로그래밍을 하는 행위 등이 존재 합니다. 저라는 객체를.. 사람, 남자, 개발자 등의 클래스로 분류(c..
※ 추천 글 https://www.youtube.com/watch?v=Ui6a1-PHdXU&t=4220s 1. 상속 가. 클래스다이어그램 고래는 포유류다. (하위클래스는 상위클래스다.) public class 고래 extends 포유류 {} 나. 예시 LSP 다. 상속의 강력함 재사용성 라. 주의 자바(C#) 는 단일 상속만 지원 2. 인터페이스를 통한 확장 가. 클래스다이어그램 public class 고래 extends 포유류 implements 헤엄칠수있는 {}