윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 07. 상속의 이해.

Slides:



Advertisements
Similar presentations
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Advertisements

5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
최윤정 Java 프로그래밍 클래스 상속 최윤정
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 07. 반복실행을 명령하는 반복문.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 08 장 자바 빈즈 학기 인터넷비즈니스과 강 환수 교수.
Network Lab. Young-Chul Hwang
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 01. 이것이 C언어다.
윤성우의 열혈 C++ 프로그래밍 Chapter C++에서의 구조체 윤성우 저 열혈강의 C++ 프로그래밍 개정판.
Chapter 25. 메모리 관리와 메모리의 동적 할당
제 3장. C보다 나은 C++ II.
9강. AOP(Aspect Oriented Programming)-I
Chapter 06. printf 함수와 scanf 함수 정리하기
자바 5.0 프로그래밍.
23장. 구조체와 사용자 정의 자료형 2.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Java 6장. 클래스 : 속성 public class SumTest {
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 03. 변수와 연산자.
명품 C++ 8장 상속.
자바 5.0 프로그래밍.
11장. 1차원 배열.
C#.
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
자바 5.0 프로그래밍.
자바응용.
Chapter 11 객체지향 프로그래밍의 기초 01 클래스 02 생성자 03 인스턴스 변수와 클래스 변수 예제 모음 요약
메모리 관리 & 동적 할당.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
Power Java 제11장 상속.
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
JA A V W. 06.
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
12. 상속 : 고급.
객체기반 SW설계 팀활동지 4.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
Chapter 16. C++ 형 변환 연산자와 맺는 글
Chapter 13. 템플릿(Template) 1
Chapter 15. 예외처리(Exception Handling)
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
.Net Web Application 2007 컴퓨터공학실험(Ⅰ)
중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
3. 모듈 (5장. 모듈).
Chapter 27. 파일의 분할과 헤더파일의 디자인
서브클래스 조 병 규 한 국 교 통 대 학 교 SQ Lab..
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 23. 구조체와 사용자 정의 자료형2.
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
.Net FrameWork for Web2.0 한석수
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 04. 클래스의 완성.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
Presentation transcript:

윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 07. 상속의 이해

윤성우의 열혈 C++ 프로그래밍 Chapter 07-1. 상속에 들어가기에 앞서 윤성우 저 열혈강의 C++ 프로그래밍 개정판

상속의 이해를 위한 이 책의 접근방식 윤성우의 열혈 C++ 프로그래밍 위의 흐름대로 상속을 이해하기 바랍니다. 상속은 ‘기존에 정의해 놓은 클래스의 재활용을 목적으로 만들어진 문법적 요소’라고 이해하는 경우가 많다. 하지만 상속에는 다른, 더 중요한 의미가 담겨있다.

문제의 제시를 위한 시나리오의 도입 윤성우의 열혈 C++ 프로그래밍 프로그램 전체 기능의 처리를, 프로그램의 흐름을 담당하는 클래스를 가리켜 컨트롤 클래스라 한다. EmployeeHandler의 경우 컨트롤 클래스에 해당한다. 신규 직원 등록 시 전체 급여정보 출력 급여 합계 정보 출력 PermanentWorker는 정규직을 표현해 놓은 클래스이다.

문제의 제시 윤성우의 열혈 C++ 프로그래밍 프로그램에 추가할 직급의 형태 확장 이후의 급여지급 방식 이 문제는 영업직과 임시직에 해당하는 클래스의 추가로 끝나지 않는다. 컨트롤 클래스인 EmployeeHandlder 클래스의 대대적인 변경으로 이어진다. 좋은 코드는 요구사항의 변경 및 기능의 추가에 따른 변경이 최소화되어야 한다. 그리고 이를 위한 해결책으로 상속이 사용된다.

윤성우의 열혈 C++ 프로그래밍 Chapter 07-2. 상속의 문법적인 이해 윤성우 저 열혈강의 C++ 프로그래밍 개정판

상속의 방법과 그 결과 윤성우의 열혈 C++ 프로그래밍 Person 클래스를 public 상속함 Person 클래스의 멤버 용어정리

상속받은 클래스의 생성자 정의 윤성우의 열혈 C++ 프로그래밍 이니셜라이저를 통해서 유도 클래스는 기초 클래스의 생성자를 명시적으로 호출해야 한다. 유도 클래스의 생성자는 기초 클래스의 멤버를 초기화 할 의무를 갖는다. 단! 기초 클래스의 생성자를 명시적으로 호출해서 초기화해야 한다. 때문에 유도 클래스 UnivStudent는 기초 크래스의 생성자 호출을 위한 인자까지 함께 전달받아야 한다. private 멤버는 유도 클래스에서도 접근이 불가능하므로, 생성자의 호출을 통해서 기초 클래스의 멤버를 초기화해야 한다.

유도 클래스의 객체생성 과정 윤성우의 열혈 C++ 프로그래밍 실행결과

유도 클래스의 객체생성 과정 case1 윤성우의 열혈 C++ 프로그래밍 SoDerived dr3(23, 24); 순서 1. 메모리 공간의 할당 SoDerived dr3(23, 24); 순서 2. 유도 클래스의 생성자 호출 순서 3. 기초 클래스의 생성자 호출 및 실행 순서 4. 유도 클래스의 생성자 실행

유도 클래스의 객체생성 과정 case2 윤성우의 열혈 C++ 프로그래밍 SoDerived dr1 순서 1. 메모리 공간의 할당 순서 2. 유도 클래스의 void 생성자 호출 순서 3. 이니셜라이저를 통한 기초 클래스의 생성자 호출이 명시적으로 정의되어 있지 않으므로 void 생성자 호출 순서 4. 유도 클래스의 실행

유도 클래스 객체의 소멸과정 윤성우의 열혈 C++ 프로그래밍 실행결과 유도 클래스의 소멸자가 실행된 이후에 기초 클래스의 소멸자가 실행된다. 스택에 생성된 객체의 소멸순서는 생성순서와 반대이다.

유도 클래스 정의 모델 윤성우의 열혈 C++ 프로그래밍 기초 클래스의 멤버 대상의 동적 할당은 기초 클래스의 생성자를 통해서, 소멸 역시 기초 클래스의 소멸자를 통해서

Chapter 07-3. protected 선언과 세 가지 형태의 상속 윤성우의 열혈 C++ 프로그래밍 Chapter 07-3. protected 선언과 세 가지 형태의 상속 윤성우 저 열혈강의 C++ 프로그래밍 개정판

protected로 선언된 멤버가 허용하는 접근의 범위 윤성우의 열혈 C++ 프로그래밍 private을 기준으로 보면, protected는 private과 달리 상속관계에서의 접근을 허용한다!

세 가지 형태의 상속 윤성우의 열혈 C++ 프로그래밍 public 상속 접근 제어 권한을 그대로 상속한다! 단, private은 접근불가로 상속한다! protected 상속 protected보다 접근의 범위가 넓은 멤버는 protected로 상속한다. 단, private은 접근불가로 상속한다! private 상속 private보다 접근의 범위가 넓은 멤버는 protected로 상속한다. 단, private은 접근불가로 상속한다!

protected 상속과 private 상속 윤성우의 열혈 C++ 프로그래밍 private 상속의 결과 때문에 이 이상의 상속은 무의미할 수 있다. protected 상속의 결과

윤성우의 열혈 C++ 프로그래밍 Chapter 07-4. 상속을 위한 조건 윤성우 저 열혈강의 C++ 프로그래밍 개정판

상속의 기본 조건인 IS-A 관계의 성립 윤성우의 열혈 C++ 프로그래밍 무선 전화기는 전화기의 기본 기능에 새로운 특성이 추가된 것이다. 노트북 컴퓨터는 컴퓨터의 기본 기능에 새로운 특성이 추가된 것이다. 이렇듯 is-a 관계는 논리적으로 상속을 기반으로 표현하기에 매우 적절하다.

IS-A 기반의 예제 윤성우의 열혈 C++ 프로그래밍 예제는 도서 본문을 참조합시다!

HAS-A 관계를 상속으로 구성하면 윤성우의 열혈 C++ 프로그래밍 경찰은 총을 소유한다. 경찰 has a 총! has a 관계도 상속으로 구현이 가능하다. 하지만 이러한 경우 Police와 Gun은 강한 연관성을 띠게 된다. 따라서 총을 소유하지 않은 경찰이나, 다른 무기를 소유하는 경찰을 표현하기가 쉽지 않아진다.

HAS-A 관계는 포함으로 표현한다 윤성우의 열혈 C++ 프로그래밍 즉, 총을 소유하지 않은 경찰의 표현이 쉬워지고, 추가로 무기를 소유하는 형태로의 확장도 간단해진다.

Chapter 07이 끝났습니다. 질문 있으신지요?