객체지향프로그래 밍 (OOP)

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

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

C++ 기본문법 정리

C++ Programming

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

PowerPoint Presentation

설계란 무엇인가?

Slide 1

PowerPoint Template

PowerPoint Template

예제 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++ Programming

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

쉽게 풀어쓴 C 프로그래밍

초보자를 위한 C# 21일 완성

PowerPoint Template

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Slide 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter 6.ppt

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

Slide 1

Blog

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

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

Slide 1

PowerPoint 프레젠테이션

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

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

Microsoft PowerPoint - chap11

17장 클래스와 메소드

105È£4fš

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

강의계획서 1. 강의개요 학습과목명 객체지향프로그래밍 Ⅰ 학점 3 학점교 강사명교 강사전화번호 강의시간 4시간강의실수강대상 2. 교과목학습목표 4차산업혁명시대의도래로컴퓨터와프로그래밍에대한관심이커지고있으며, 여러분야에서소프트웨어의중요성을강조하며, 새시대를이끌

프입2-강의노트-C++배경

PowerPoint Presentation

Microsoft PowerPoint - C++ 5 .pptx

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

歯PLSQL10.PDF

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - java2 [호환 모드]

PowerPoint 프레젠테이션


C++ Programming

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

쉽게 풀어쓴 C 프로그래밍

Design Issues

PowerPoint Presentation

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

鍮뚮┰硫붾돱??李⑤낯

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

PowerPoint Presentation

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

슬라이드 1

Microsoft PowerPoint 장강의노트.ppt

제 1 강 희망의 땅, 알고리즘

Chapter #01 Subject

JVM 메모리구조

C++ 기본문법 정리

Microsoft PowerPoint - 04-UDP Programming.ppt

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - VB.NET_06.pptx

PowerPoint Presentation

Microsoft PowerPoint - 6주차.pptx

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

C++ Programming

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 PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - Chap12-OOP.ppt

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

(71) 출원인 나혜원 대구 달서구 도원동 1438 대곡사계절타운 나혜리 대구 달서구 도원동 1438 대곡사계절타운 (72) 발명자 나혜원 대구 달서구 도원동 1438 대곡사계절타운 나혜리 대구 달서구 도원동 1438 대

Microsoft Word - FunctionCall

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - 02-Class Review.pptx

<BACFC7D1B3F3BEF7B5BFC7E22D3133B1C733C8A BFEB2E687770>


Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

<4D F736F F F696E74202D2038C0E55FB0ADC0C7B3EBC6AE28B0A1BBF3C7D4BCF6BFCD20B4D9C7FCBCBA29>

유니티 변수-함수.key

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

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

Microsoft PowerPoint - 2-Objective-C 기초

JAVA PROGRAMMING 실습 07. 상속

歯자료집.PDF

No Slide Title

쉽게 풀어쓴 C 프로그래밍

Chapter 6 Objects and Classes

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

제목

쉽게 풀어쓴 C 프로그래밍

어댑터뷰

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

기초 C++ 프로그래밍 #1

Microsoft PowerPoint - 2강

초보자를 위한 자바 2 21일 완성 - 최신개정판

Transcription:

객체지향프로그래 밍 (OOP)

내용 n 객체지향 q 객체 : 데이터중심의프로그래밍 q 캡슐화 : 개발자와이용자 구현감춤 q 재이용성 : 상속 다형성

내용 n 객체지향 q 객체 : 데이터중심의프로그래밍 q 캡슐화 : 개발자와이용자 구현감춤 q 재이용성 : 상속 다형성

프로그램의중심 = 데이터 n 절차와데이터구조 예 : 학생명부관리데이터구조 절차 시작 학생 학적번호이름주소 등록 학생명부 재적학생 학생추가학생삭제학생검색 어떠한데이터를가지고있는가 어떤처리가가능하가 학생번호입력 이름입력 주소입력 학생정보를명부에입력 계속입력? 종료 데이터구조가결정된후비로소절차가결정된다.

구조적프로그래밍언어와절차 n 구조적프로그래밍 q 절차를구조적으로그려서, 직감적으로알기쉽게작성 시작 학생번호입력 이름입력 주소입력 학생정보를명부에입력 계속입력? 종료 q 절차지향적인프로그래밍파라다임 q 데이터구조에관해서는조금고려가필요 데이터중심파라다임 : 객체지향 예 : C 언어 St udent Li st l i st ; do st r i ng name = I nput Name( ) ; st r i ng addr = I nput Addr ess( ) ; AddTo( l i st, name, addr ) ; } whi l e (! I send( ) ) ;

데이터의표현방법 n 객체지향의주인공 : 클래스와인스턴스 q 클래스 q 인스턴스 n 설계도 n 각각의제품, 실체 n 형 cl ass TV i nt channel ; n 변수의내용 TV t v1; TV t v2; TV t v3; TV t v4; doubl e vol ume;

C# 의클래스 (1) n C# 의클래스 = C 구조체를확장한것 학생 학적번호이름주소 등록 학생명부 재적학생 학생추가학생삭제학생검색 어떠한데이터를가지고있는가 어떤처리가가능하가 cl ass St udent publ i c i nt i d; publ i c st r i ng name; publ i c st r i ng addr ess; cl ass St udent Li st Li st <St udent > l i st ; i nt num; publ i c voi d Add( St udent s) ; publ i c voi d Remove( St udent s) ; publ i c St udent Fi nd( i nt i d) ; 어떠한데이터를가지고있는가 멤버변수 어떤처리가가능하가 멤버함수

C# 의클래스 (2) n C# 의클래스 = C 의구조체를확장한것 cl ass St udent Li st Li st <St udent > l i st ; i nt num; publ i c voi d Add( St udent s) ; publ i c voi d Remove( St udent s) ; publ i c St udent Fi nd( i nt i d) ; q struct 대신에 class 키워드 n ( 실제론 struct 도클래스로사용가능 ) q 멤버변수와멤버함수사용 n 멤버변수 : 어떤데이터를가지는가 n 멤버함수 : 어떤처리가가능한가 q private 과 public n 클래스의외부에보이는가 n 상세한것은다음에설명

생성자 n 생성자 = 초기화를위한특수한멤버함수 cl ass Per son publ i c st r i ng name; publ i c i nt age; publ i c Per son( st r i ng n, i nt a) name = n; age = a; } 클래스명과같은이름 리턴타입을지정안함 인스턴스작성시호출된다 인스턴스작성방법 Per son pp = new Per son( 화자 ", 4) ;

내용 n 객체지향 q 객체 : 데이터중심의프로그래밍 q 캡슐화 : 개발자와이용자 구현감춤 q 재이용성 : 상속 다형성

2 가지의시점 n 개발과사용 ( 예 : 텔레비젼 ) 개발 n 내부를보지마라 n 내부를열면 AS 안됨 사용 n 내부에는흥미없음 ntv 프로가보이면 OK 인터페이스 ( 개발과사용의경계 ) n 채널변경 같은필요한처리 n공개된처리만사용만공개

프로그래밍수칙 n 수개월전의자신은이미다른사람 q 자신이짠프로그램도, 자세한것은잊어버린다 프로그래밍수칙 주석을잘단다 읽기쉬운코드를작성한다 처리단위별로함수화한다 다른사람을위해? 자신을위해!

자신도사용자 n 일단짠후에는, 자신도사용자가된다. 개발? 이용! n 어디를건드리면고장나나? n 어떤순서로작동하면작동안되나? n 내용은별로기억하지않는다 ntv 만잘나오면된다 항상사용자입장에서개발해야! n 내용 ( 구현 ) 은감춘다 n 인터페이스가되는처리만클래스밖에공개

Private 와 public n private : 클래스밖에서안보임 ( 은폐, 캡슐화 ) n public : 클래스밖에서도보임 ( 공개 ) 클래스정의입장 cl ass St udent Li st pr i vat e Li st <St udent > l i st ; pr i vat e i nt num; publ i c voi d Add( St udent s) ; publ i c voi d Remove( St udent s) ; 클래스사용입장 St udent Li st l i st = new St udent ; l i st. num = 0; l i st. Add( s) ; 에러 OK 밖에서안보임 list 를잘못사용하면잘못됨 리스트의길이 num 을함부로변경하면잘못됨 밖에서보임 Add 등을통해서 list 나 num 의내용을변경 지침 : 데이터감춤 (private) 처리를보인다 (public)

setter/getter n 단순한데이터도멤버함수를사용하여읽고쓴다 cl ass Per son st r i ng name; i nt age; publ i c voi d Set Name( st r i ng n) ; publ i c st r i ng Get Name( ) ; publ i c voi d Set Age( i nt a) ; publ i c i nt Get Age q 귀찮아도 public 으로하고싶은멤버의수만 Set/Get 짝으로 n setter/getter 를호출한다 n accessor 라고부르기도하다 q 이유 : n 내부사양이바뀌어도외부사양을바꾸지않기위해 n 다형성 ( 다음에설명 ) 을위해 n) ; voi d Name( st r i ng st r i ng Name( ) ; q C# 에서는 속성 이라는 accessor 용의구문이따로있다

내용 n 객체지향 q 객체 : 데이터중심의프로그래밍 q 캡슐화 : 개발자와이용자 구현감춤 q 재이용성 : 상속 다형성

클래스의개층구조 n 추상과구체화 A 사구현 B 사구현 TV C 사구현 n 상위개념과하위개념 동물 포유류 영장목 사람 조류 식육목 고릴라 파충류 소목

C++ 클래스의상속 n 데이터의승계와추가 기저클래스 cl ass Per son pr ot ect ed st r i ng name; pr ot ect ed i nt age; 파생클래스 cl ass St udent : Per son pr ot ect ed: i nt st udent I d; q 상위개념 : 기저 (base) 부모 (super) q 하위개념 : 파생 (derived) 자녀 (sub) q 클래스의뒤에 : 기저클래스명 q protected: n 클래스밖에서비공개 n 파생클래스에서공개 cl ass Teacher : Per son pr ot ect ed: Cour ce i nt er est ;

다형성 n 다형성 = 행동의변경 기저클래스 cl ass Per son publ i c vi r t ual i nt Get Age( ) } q 처리행동의변경 n 덮어쓰기 (override) q 덮어쓰고자하는처리에 virtual 을붙임 정직한사람 cl ass Tr uepenny : Per son publ i c over r i de i nt Get Age( ) r et ur n age; } 거짓말쟁이 cl ass Li ar : Per son publ i c 나이속임 over r i de i nt Get Age( ) r et ur n age - 2; } polymorphism: 많다+형태 다형성. 다양한행동

정적인형과동적인형 n 부모클래스의포인터에자식클래스의인스턴스대입이가능하다 Per son p1 = new Tr uepenny( ) ; Per son p2 = new Li ar ( ) ; 정적 동적 n 정적인형 : 변수의형 n 동적인형 : 실제로 new 로만든형 정적인형 동적인형 p1 Per son Tr uepenny p2 Per son Li ar

가상함수 예 n 가상함수 = virtual 키워드가붙는함수 q 일반함수 q 가상함수 Per son p1 = new Tr uepenny( ) ; Per son p2 = new Li ar ( ) ; i nt age_p1 = p1. Get Age( ) ; i nt age_p2 = p2. Get Age( ) ; 정적인형 : 정적인형에기반하여호출된다 : 동적인형에기반하여호출된다 ) 1. Get Age 가일반함수 동적인형 p1 Per son Tr uepenn y p2 Per son Li ar i nt Get Age( ) ; p1. Get Age( ) ; p2. Get Age( ) ; 2. Get Age 가가상함수 vi r t ual i nt Get Age( ) ; p1. Get Age( ) ; p2. Get Age( ) ; Per son 의 Get Age Per son 의 Get Age Tr uepenny 의 Get Age Li ar 의 Get Age