쉽게 풀어쓴 C 프로그래밍

Similar documents
쉽게 풀어쓴 C 프로그래밍

gnu-lee-oop-kor-lec06-3-chap7

쉽게 풀어쓴 C 프로그래밍

C++ Programming

Microsoft PowerPoint - additional08.ppt [호환 모드]

Microsoft PowerPoint - additional07.ppt [호환 모드]

Blog

PowerPoint Template

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Microsoft PowerPoint - 6주차.pptx

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - Chapter 6.ppt

C++ Programming

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

Microsoft PowerPoint - C++ 5 .pptx

슬라이드 1

설계란 무엇인가?

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밊

PowerPoint Presentation

Microsoft PowerPoint - additional06.ppt [호환 모드]

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

C++ Programming

PowerPoint Presentation

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

5장.key

01-OOPConcepts(2).PDF

Slide 1

PowerPoint Template

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

C프로-3장c03逞풚

PowerPoint Presentation

C++ Programming

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

PowerPoint Presentation

윤성우의 열혈 TCP/IP 소켓 프로그래밍

JAVA PROGRAMMING 실습 08.다형성

8. 클래스 D는클래스 A, 클래스 B, 클래스 C로부터상속받아맊들고싶다. 아래빈칸을채우시오. ( 대소문자주의하시오 ) class D { ; Student s; 11. 다음프로그램의실행결과는? 9. 다음프로그램의실행결과는? class A{ A(){cout << " 생성

Programming hwp

Slide 1

자바 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Chapter 6 Objects and Classes

윤성우의 열혈 TCP/IP 소켓 프로그래밍

080629_CFP °ø°³¿ë.hwp

1. 기본형의형변환복습 C/C++ 형변환의종류 자동형변환 ( 묵시적형변환 ) 강제형변환 ( 명시적형변환 ) 기본형의자동형변환의예 1. 배열 to 포인터변환 배열명은해당배열의첫번째원소의 주소로변환됨 int ary[10]; int *pary = ary; 2. 함수 to 포

Microsoft PowerPoint - 2강

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

유니티 변수-함수.key

PowerPoint Presentation

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

PowerPoint Presentation

Microsoft PowerPoint - additional01.ppt [호환 모드]

쉽게 풀어쓴 C 프로그래밍

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

Microsoft PowerPoint - [2009] 02.pptx

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Microsoft PowerPoint - CSharp-10-예외처리

JAVA PROGRAMMING 실습 07. 상속

Microsoft PowerPoint - 05장(함수) [호환 모드]

Microsoft PowerPoint - Chapter 10.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

No Slide Title

PowerPoint Presentation

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint Presentation

윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint Template

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint - Java7.pptx

chap10.PDF

Microsoft PowerPoint - VB.NET_06.pptx

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

C++ Programming

Microsoft PowerPoint - additional03.ppt [호환 모드]

PowerPoint 프레젠테이션

제11장 프로세스와 쓰레드

Week3

슬라이드 1

PowerPoint Presentation

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 02. 표준 입출력

설계란 무엇인가?

Microsoft PowerPoint - chap11

09-interface.key

Microsoft PowerPoint - java2 [호환 모드]

Microsoft Word - EEL2 Lab4.docx

쉽게

Transcription:

제 11 장상속 1. 상속의개념을이해한다. 2. 상속을이용하여자식클래스를작성할수있다. 3. 상속과접근지정자와의관계를이해한다. 4. 상속시생성자와소멸자가호출되는순서를이해한다.

이번장에서만들어볼프로그램 class Circle { int x, y; int radius;... class Rect { int x, y; int width, height;... 중복

상속의개요

상속의정의

예제 class Car { int speed; ; class SportsCar : public Car { bool turbo; ;

자식클래스와부모클래스

예제

예제 #include <iostream> #include <string> using namespace std; class Car { int speed; // 속도 public: ; void setspeed(int s) { speed = s; int getspeed() { return speed; // Car 클래스를상속받아서다음과같이 SportsCar 클래스를작성한다. class SportsCar : public Car { bool turbo; public: ; void setturbo(bool newvalue) { turbo = newvalue; bool getturbo() { return turbo;

예제 int main() { SportsCar c; c.setspeed(60); c.setturbo(true); c.setspeed(100); c.setturbo(false); return 0; // 부모클래스함수호출 // 자식클래스함수호출

상속은왜필요한가? 상속

상속계층도 상속은여러단계로이루어질수있다.

상속계층도

상속은 is-a 관계 상속은 is-a 관계 자동차는탈것이다. (Car is a Vehicle). 사자, 개, 고양이는동물이다. has-a( 포함 ) 관계는상속으로모델링을하면안된다. 도서관은책을가지고있다 (Library has a book). 거실은소파를가지고있다.

중간점검문제 1. 상속은왜필요한가? 2. 사자, 호랑이, 고양이를상속계층구조를이용하여표현하여보자.

Lab: 도형과사각형

예제 #include <iostream> using namespace std; class Shape { int x, y; public: void setx(int xval) { x = xval; void sety(int yval) { y = yval; ;

예제 class Rectangle : public Shape { int width, height; public: void setwidth(int w) { width = w; void setheight(int h) { height = h; int getarea() { return (width * height); ;

예제 int main() { Rectangle r; r.setwidth(5); r.setheight(6); cout << " 사각형의면적 : " << r.getarea() << endl; return 0;

상속에서의생성자와소멸자 자식클래스의객체가생성될때에당연히자식클래스의생성자는호출된다. 이때에부모클래스생성자도호출될까? SportsCar +speed +gear +color +setgear()() + speedup()() + speeddown()() -turbo : bool +setturbo()() 부모클래스 Car 에서상속받은부분 추가한부분

상속에서의생성자와소멸자

예제 class Shape { int x, y; public: Shape() { cout << "Shape 생성자 () " << endl; ~Shape() { cout << "Shape 소멸자 () " << endl; ; class Rectangle : public Shape { int width, height; public: Rectangle() { ~Rectangle() { ; cout << "Rectangle 생성자 ()" << endl; cout << "Rectangle 소멸자 ()" << endl;

예제 int main() { Rectangle r; return 0;

부모클래스의생성자를호출하는 방법

예제 Rectangle(int x=0, int y=0, int w=0, int h=0) : Shape(x, y) { width = w; height = h; Rectangle(int x=0, int y=0, int w=0, int h=0) : Shape(x, y), width(w), height(h) {

예제 class Shape { int x, y; public: Shape() { cout << "Shape 생성자 () " << endl; Shape(int xloc, int yloc) : x{xloc, y{yloc { cout << "Shape 생성자 (xloc, yloc) " << endl; ~Shape() { cout << "Shape 소멸자 () " << endl; ;

예제 class Rectangle : public Shape { int width, height; public: Rectangle::Rectangle(int x, int y, int w, int h) : Shape(x, y) { width = w; height = h; cout << "Rectangle 생성자 (x, y, w, h)" << endl; ~Rectangle() { cout << "Rectangle 소멸자 ()" << endl; ;

예제 int main() { Rectangle r(0, 0, 100, 100); return 0;

Lab: 컬러사각형 각형을 Rect 클래스로나타내자. 이클래스를상속받아서컬러사각형 ColoredRect 을정의해보자. ColoredRect 클래스를이용하여화면에다음과같은색깔있는사각형을그려보자.

예제 class Rect { protected: int x, y, width, height; public: Rect(int x, int y, int w, int h) : x(x), y(y), width(h), height(h) { void draw() { HDC hdc = GetWindowDC(GetForegroundWindow()); Rectangle(hdc, x, y, x + width, y + height); ;

예제 class ColoredRect : Rect { int red, green, blue; public: ColoredRect(int x, int y, int w, int h, int r, int g, int b) : Rect(x, y, h, w), red(r), green(g), blue(b) { void draw() { HDC hdc = GetWindowDC(GetForegroundWindow()); SelectObject(hdc, GetStockObject(DC_BRUSH)); SetDCBrushColor(hdc, RGB(red, green, blue)); Rectangle(hdc, x, y, x + width, y + height); ;

예제 int main() { Rect r1(100, 100, 80, 80); ColoredRect r2(200, 200, 80, 80, 255, 0, 0); r1.draw(); r2.draw(); return 0;

접근지정자

접근지정자

예제 class Person { string name; protected: string address; ; class Student : Person { public: void setaddress(string add) { address = add; string getaddress() { return address; ;

예제 int main() { Student obj; obj.setaddress(" 서울시종로구 1 번지 "); cout << obj.getaddress() << endl; return 0;

멤버함수재정의 자식클래스가필요에따라상속된멤버함수를재정의하여사용하는것을의미한다.

예제 #include <iostream> #include <string> using namespace std; class Animal { public: void speak() { cout << " 동물이소리를내고있음 " << endl; ; class Dog : public Animal { public: ; void speak() { cout << " 멍멍!" << endl;

예제 int main() { Dog obj; obj.speak(); return 0;

중복정의와재정의

부모클래스의멤버함수호출 #include <iostream> #include <string> using namespace std; class ParentClass { public: void print() { cout << " 부모클래스의 print() 멤버함수 " << endl; ; class ChildClass : public ParentClass { int data; public: void print() { // 멤버함수재정의 ParentClass::print(); cout << " 자식클래스의 print() 멤버함수 " << endl; ;

부모클래스를상속받는 3 가지방법

에제 #include <iostream> using namespace std; class Base { public: int x; protected: int y; private: int z; ; class Derived : private Base{ // x 는자식클래스에서사용가능하지만 private 로지정된다. // y 는자식클래스에서사용가능하지만 private 로지정된다. // z 는자식클래스에서도사용할수없다. ; int main() { Derived obj; cout << obj.x;

Lab: 게임에서의상속

에제 class Sprite { int x, y; string image; public: Sprite(int x, int y, string image) : x(x), y(y), image(image) { void draw() { void move() { ; class Alien : public Sprite { int speed; public: Alien(int x, int y, string image) : Sprite(x, y, image) { void move() { ;

에제 class Player : public Sprite { string name; public: Player(int x, int y, string image) : Sprite(x, y, image) { void move() { ; int main() { Alien a( 0, 100, "image1.jpg" ); Player p(0, 100, "image1.jpg"); return 0;

다중상속 다중상속 (multiple inheritance) 이란하나의자식클래스가두개이상의부모클래스로부터멤버를상속받는것을의미한다.

에제 class PassangerCar { public: int seats; // 정원 void set_seats(int n) { seats = n; ; class Truck { public: int payload; // 적재하중 void set_payload(int load) { payload = load; ;

에제 class Pickup : public PassangerCar, public Truck { public: int tow_capability; // 견인능력 void set_tow(int capa) { tow_capability = capa; ; int main() { Pickup my_car; my_car.set_seats(4); my_car.set_payload(10000); my_car.set_tow(30000); return 0;

Q & A