일단 디자인 패턴이랑 객체 지향이 무슨 관련인지 먼저 알아보자.
객체 지향의 다형성
[https://www.youtube.com/watch?v=Pk7K6JzK-TU] 이 유트브를 정리한 것입니다.
동일한 종에서 다양한 형질이 나옴.
~는 같은데 ~는 다르다
1. 메소드 명은 같은데, 동작이 다르다.
오버라이딩 : 하위 클래스에서 재정의
오버 로딩 : 매개변수의 유형과 갯수가 다름.
2. 서브 타입 다형성
같은 자료형에 다양한 객체를 주입...?
여기서 이제 중요한 포인트는
객체지향은 1,2번 두가지를 조합해서 사용할 수 있다.
오버라이드와 서브타입 다형성을 조합. 그럼으로서 하나의 자료형이 다양한 동작을 할 수 있다. 상속을 통해 가능.
이제 실전 예제다
이제 여기서 요구 사항이 생긴다.
1. 회원 정보는 파일 저장 -> db 저장해주세요
2. 단 , 제품 정보는 파일에 그대로 저장.
FileSaveManager 클래스에 saveDB가 있다는 것이 좀 이상하다....
이렇게 되면 메소드명은 동일해서 안바꿔도 되는데 대신, , 변수타입을 바꿔줘야되.
음 이렇게 하면 바꿔줘야 될 부분이, 빨간색 객체 생성 부분만 바꿔주면 된다라고 함.
수정범위가 최소화된 셈이다.
하지만 다형성은 수정 범위를 최소화하려고 하는게 아니다!!라고하심
근데 이렇게 객체 생성 코드를 뺴는건, 패턴 범위가 아니라 하심; 일단 스킵...
상속관계가 이상하다.
다형성은 수정단계에서 고려되는 것이 아니라, 설계 단계에서 고려되어야 한다.
잘못하면 수정 비용이 더들수도 있다.
위에는 첨에는 틀만 만들고 메소드를 알맞게 정의해서 사용하라는 건데,
저장 공간이 바뀌면은 무슨 말이지? 아 파일이 아니라, 메모리에 저장하려고 하게되면 새로운 클래스 만들때, 세이브 메니저는 상속받고, 객체를 생성할때는 회색부분만 바꾸면 된다는 말이다.
선언 자체는 SaveManager로 해도 되니까
이후 내용은 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 |