Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 14 – 객체 지향 프로그래밍 Outline 14.1 소프트웨어의 재사용과 독립성

Similar presentations


Presentation on theme: "Chapter 14 – 객체 지향 프로그래밍 Outline 14.1 소프트웨어의 재사용과 독립성"— Presentation transcript:

1 Chapter 14 – 객체 지향 프로그래밍 Outline 14.1 소프트웨어의 재사용과 독립성
14.2 객체, 클래스, 메소드 14.3 상속 14.4 동적 바인딩 14.7 객체 지향 언어 설계 문제

2 객체 지향 (object-oriented)
Overview 1970년대 : 구조적 프로그래밍 1980년대 : 객체 지향 프로그래밍 (OOP) 대형 프로그램의 작성 용이 구조적 프로그램보다 프로그램 판독 용이 객체 지향 (object-oriented)

3 14.1 소프트웨어의 재사용과 독립성 모듈의 독립성을 위해 접근 제어 소프트웨어 모듈을 재사용하기 위한 기본 방법
자료와 연산의 확장 자료와 연산의 제한 하나 이상의 연산을 재정의 두 개의 부품에 사용되는 비슷한 연산들을 하나의 새 부품으로 추상화 다형성(polymorphism) 또는 연산에 적용할 자료형의 확장 모듈의 독립성을 위해 접근 제어 모든 내부 자료에 대한 접근 연산을 정의 클라이언트가 접근 할 수 있는 자료를 방출할 목록에 열거 정보 은닉 기법 (information hiding) or 캡슐화 기법 (encapsulation) = 보호 기법 (protection mechanism)

4 14.2 객체, 클래스, 메소드 객체 지향 언어에서의 객체 (object) 클래스 (class) 객체의 상태
객체 자신의 내부적, 또는 지역적인 것을 의미 객체의 부분 선언된 지역 변수들에 의해 표현 메소드 (method) 클래스 (class) 지역 상태와 메소드에 대한 패턴 기본적으로 자료형과 동일 인스턴스 특정 클래스로 선언된 객체 인스턴스 변수 : 객체의 상태를 나타내는 지역 변수

5 14.2 객체, 클래스, 메소드 class COMPLEX(x,y); real x,y; begin real re,im;
  real procedure RealPart;   begin       RealPart := re; end RealPart;   real procedure ImaginaryPart;       ImaginaryPart := im;   end ImaginaryPart;   procedure Add(y);ref (COMPLEX) y;       re := re + y.RealPart;       im := im + y.ImaginaryPart;   end Add;   . . .   comment - 초기화 코드   re := x;   im := y; end COMPLEX; ref (COMPLEX) z; ref (COMPLEX) w; . . . z :- new COMPLEX(1.0,1.0); w :- new COMPLEX(1.0,1.0); z.Add(w) z :- new COMPLEX(x.RealPart,x.ImaginaryPart); z.Add(y);

6 < Simula의 클래스, 참조 클래스 선언 예 >
14.2 객체, 클래스, 메소드 < Simula의 클래스, 참조 클래스 선언 예 > class linkableObject; begin      ref (linkableObject) link;      ref (linkableObject) procedure next;      begin          next :- link;      end next;      procedure linkto(p);ref (linkableObject) p;        link :- p;      end linkto;      link :- none   -- link 초기값 end linkableObject; x :- new linkableObject

7 14.3 상속 상속 (inheritance) 내부 구조와 연산 집합의 전체
부분을 어떤 클래스에서 그 하위 클래스로 복사하는 것 클래스들간에 자료와 연산을 공유 A class B ; begin …… end B ;

8 14.3 상속 <예 1> class queue; begin
  procedure enqueue(x);integer x;begin ... end enqueue;   procedure dequeue;begin ... end dequeue;   integer procedure front;begin ... end front;   boolean procedure empty;begin ... end empty;   . . . end queue; queue class deque; begin   procedure addfront(x);integer x;begin ... end addfront;   procedure deleterear;begin ... end deleterear; end deque; ref (queue) q; ref (deque) d; d :- new deque; q :- d;

9 14.3 상속 <예 2-1> class point(x,y); real x,y; begin . . .
end point; class circle(center,radius); ref (point) center; real radius;   real procedure area;   begin       area := pi * radius * radius   end area;   . . . end circle; class rectangle(center,width,height); real width,height;       area := width * height end rectangle; class closedFigure(center); ref (point) center; virtual :   real procedure area; begin   . . . end closedFigure;

10 14.3 상속 <예 2-2> closedFigure class circle(radius);
real radius; begin   real procedure area;   begin       area := pi * radius * radius   end area;   . . . end circle; closedFigure class rectangle(width,height); real width,height;     area := width * height end rectangle ref (point) x,y; ref (closedFigure) f; ref (rectangle) s; ref (circle) c; x :- new point(0.0,0.0); y :- new point(1.0,-1.0); s :- new rectangle(x,1.0,1.0); c :- new circle(y,1.0); f :- s; f.area; f :- c;

11 14.3 상속 다중 상속 하나의 파생 클래스가 여러 개의 기반 클래스에서 상속 받음
COMPLEX,linkableObject class linkableComplex; begin    . . . end linkableComplex; x.Add(y); y.linkto(x);

12 14.4 동적 바인딩 클래스의 동적인 특성과 모듈의 정적인 특성
객체 지향 언어의 클래스와 Modula의 모듈 혹은 Ada의 패키지를 구별하는 주요 특징 동적 기억장소 배당 (dynamic storage allocation) Pascal : new 함수 및 dispose 함수 Lisp : 완전 자동 Simula : 복합적 방법 (new 제공, 자동회수) 동적 클래스 기억장소의 배당과 회수 메소드의 동적 변환

13 14.4 동적 바인딩 rectangle class borderedRectangle(border); real border;
begin   real procedure area;   begin       area := (width+2.0 * border) * (height *border);   end area;   . . . end borderedRectangle class A; begin   virtual procedure p; end A; A class B;   procedure p;   . . .   end p;   procedure q;   begin   end q;   procedure f;      p;   end f;   procedure g;      q;   end g; end B B class C; end C; rectangle r; r :- new borderedRectangle; . . . r.area C x; x :- new C;

14 14.7 객체 지향 언어 설계 문제 클래스와 자료형 상속과 도입
클래스에 대해 기존의 자료형 검사에서 제외 클래스를 자료형 생성자로 간주, 클래스 선언문을 언어의 자료형의 일부분으로 취급 클래스 자체가 자료형 시스템이 됨 상속과 도입 클라이언트와 계승자 구분 클라이언트 : 정보 은닉 계승자 : 클래스의 특징과 구현에 대한 접근을 모두 상속 (open-closed 법칙) 안전성 : 상속 < 도입 상속 (inheritance) 과 다형성 (polymorphism) 상속과 동적 바인딩이 묵시적인 다형성 지원 명시적인 다형성의 기능 제공 필요성 적음

15 슬라이드 쇼가 끝났습니다.

16 용 어 정리

17 정보 은닉 (information hiding)
용어 국제 표준 규격 information hiding 정보 은닉 A portion of a task during the execution of which other parts of this or other tasks are prohibited from execution. 사용자가 꼭 알아야 하는 세부사항 이외에는 언어 구성자 또는 관련 특정 세부 사항을 알려주거나 접근하지 못하게 하는 원리

18 캡슐화하다 (to encapsulate)
용어 국제 표준 규격 to encapsulate 캡슐화하다 To apply information hiding to a language construct. 언어 구성자에 정보 은닉을 적용하다.

19 전용 (private) 용어 국제 표준 규격 15.09.04 private 전용
Pertaining to characteristics of language constructs that are not directly available to the user of these language constructs. 해당 언어 구성자의 사용자가 직접적인 사용이 가능하지 않게 하는 언어 구성자의 특성.

20 object (in programming language) 객체 (프로그래밍 언어에서)
용어 국제 표준 규격 object (in programming language) 객체 (프로그래밍 언어에서) A set of operations and data that store and retain the effect of the operations. <NOTE> Objects are implemented as packages or task in Ada, as “modules” in Modula-2, and as “objects” in Smalltalk. 연산의 효과를 저장하고 유지하는 연산들과 자료의 집합 <주> 객체는 Ada에는 패키지들 또는 테스크들로, Modula-2에서는 “모듈”로, Smalltalk에서는 “객체”로 구현된다.

21 message (in programming language) 메시지 (프로그래밍 언어에서)
용어 국제 표준 규격 message (in programming language) 메시지 (프로그래밍 언어에서) A request for an object to perform one of its operations. 객체가 연산들 중 하나의 수행을 요청함.

22 method (in programming language) 메소드 (프로그래밍 언어에서)
용어 국제 표준 규격 method (in programming language) 메소드 (프로그래밍 언어에서) An operation that an object executes upon receipt of a message. 어떤 객체가 어떤 메시지를 받으면 실행하는 연산

23 class (in programming language) 클래스 (프로그래밍 언어에서)
용어 국제 표준 규격 class (in programming language) 클래스 (프로그래밍 언어에서) A template for objects that defines the internal structure and the set of operations for instances of such objects. <NOTE> In object-oriented programming, classes are comparable to data types in some programming languages, such as C and pascal. 내부 구조를 정의하는 객체들과 그 객체 인스턴스가 사용하는 연산 집합을 위한 틀 <주> 객체 지향 언어에서, 클래스는 C와 Pascal 같은 프로그래밍 언어에서의 자료형과 비교될 수 있다.

24 다형성 (polymorphism) 용어 국제 표준 규격 15.09.10 polymorphism 다형성
The ability of different objects to respond to the same message differently. 다양한 객체들이 동일한 메시지에 다르게 응답하는 능력

25 상속 (inheritance) 용어 국제 표준 규격 15.09.11 inheritance 상속
The copying of all or part of the internal structure and of the set of operations from one class to a subordinate class. 내부 구조와 연산 집합의 전체 혹은 부분을 어떤 클래스에서 그 하위 클래스로 복사함.

26 위임 (delegation) 용어 국제 표준 규격 15.09.12 delegation 위임
A means that permits an object to assign servicing of a message to another object. 어떤 객체가 다른 객체에 메시지의 처리 기능을 배정하는 것을 허용하는 수단

27 객체 지향 (object-oriented)
용어 국제 표준 규격 Object-oriented 객체 지향 Pertaining to technique or a programming language that supports objects, classes and inheritance. <NOTE> Some authorities list the following requirements for object-oriented programming : information hiding or encapsulation, data abstraction, message passing, polymorphism, dynamic binding, and in heritance. 객체, 클래스, 상속을 제공하는 기술 또는 프로그래밍 언어의 속성 <주> 일부 기관에서는 객체 지향 프로그래밍에 다음 요구 조건을 열거한다 : 정보 은닉 또는 캡슐화, 자료 추상화, 메시지 전달, 다형성, 동적 바인딩 그리고 상속

28 동적 저장공간 배당 (dynamic storage allocation)
용어 국제 표준 규격 dynamic storage allocation 동적 저장공간 배당 Allocation of storage space to data objects only for the duration of the execution of their scope. 자료 객체의 영역 안에서 실행이 지속되는 동안만 자료 객체에게 저장 공간을 배당함


Download ppt "Chapter 14 – 객체 지향 프로그래밍 Outline 14.1 소프트웨어의 재사용과 독립성"

Similar presentations


Ads by Google