취업,면접 대비/cs 전공 공부

<객체지향 & 디자인 패턴> 객체지향과 디자인 패턴 1

studying develop 2020. 4. 2. 05:53

일단 디자인 패턴이랑 객체 지향이 무슨 관련인지 먼저 알아보자.

 

 

객체 지향의 다형성

[https://www.youtube.com/watch?v=Pk7K6JzK-TU] 이 유트브를 정리한 것입니다.

 

동일한 종에서 다양한 형질이 나옴.

~는 같은데 ~는 다르다

 

1. 메소드 명은 같은데, 동작이 다르다.

오버라이딩 : 하위 클래스에서 재정의

오버 로딩 : 매개변수의 유형과 갯수가 다름.

 

2. 서브 타입 다형성

같은 자료형에 다양한  객체를 주입...?

 

 

여기서 이제 중요한 포인트는

객체지향은 1,2번 두가지를 조합해서 사용할 수 있다.

 

오버라이드와 서브타입 다형성을 조합. 그럼으로서 하나의 자료형이 다양한 동작을 할 수 있다. 상속을 통해 가능.

 

 

이제 실전 예제다

이제 여기서 요구 사항이 생긴다.

1. 회원 정보는  파일 저장 -> db 저장해주세요

2. 단 , 제품 정보는 파일에 그대로 저장.

 

 

이게 첫번째 방법, 메소드를 새로 만든다.

FileSaveManager 클래스에 saveDB가 있다는 것이 좀 이상하다....

 

 

이게 두번째 방법, 클래스를 새로 만든다.

이렇게 되면 메소드명은 동일해서 안바꿔도 되는데 대신, , 변수타입을 바꿔줘야되.

 

이번에는 오버라이딩과 서브타입 다형성을 이용한다.

음 이렇게 하면 바꿔줘야 될 부분이, 빨간색 객체 생성 부분만 바꿔주면 된다라고 함.

수정범위가 최소화된 셈이다.

 

 

 

하지만 다형성은 수정 범위를 최소화하려고 하는게 아니다!!라고하심

근데 이렇게 객체 생성 코드를 뺴는건, 패턴 범위가 아니라 하심; 일단 스킵...

 

 

상속관계가 이상하다.

다형성은 수정단계에서 고려되는 것이 아니라, 설계 단계에서 고려되어야 한다.

잘못하면 수정 비용이 더들수도 있다.

 

위에는 첨에는 틀만 만들고 메소드를 알맞게 정의해서 사용하라는 건데, 

 

저장 공간이 바뀌면은 무슨 말이지? 아 파일이 아니라, 메모리에 저장하려고 하게되면 새로운 클래스 만들때, 세이브 메니저는 상속받고, 객체를 생성할때는 회색부분만 바꾸면 된다는 말이다.

 

선언 자체는 SaveManager로 해도 되니까

 

 

 

 

abstract가 swift protocol 같은거네
추상 클래스로 해줘야, 다른데서 객체 생성이 안된다.

 

 

자바는 다형성을 사용시 추상 클래스 보다, 인터페이스를 사용한다 함

 

이후 내용은 2편에서 하신다함;

 

'취업,면접 대비 > cs 전공 공부' 카테고리의 다른 글

<용어> wrapper란?  (1) 2020.04.08
<자료구조>그래프 주요 용어  (0) 2020.04.03
<운영체제> 인터럽트  (0) 2020.03.29
<운영체제> 메모리 자원 관리  (0) 2020.03.29
<운영체제> Thread Preemption  (0) 2020.03.29