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

Slides:



Advertisements
Similar presentations
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 프로그래밍 언어론 2nd edition Tucker and Noonan 1 장 소 개 A good programming language is a.
Advertisements

Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
제 4 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
Chapter 2 정보시스템 아키텍처 (IS Architecture)
Chapter 7 ARP and RARP.
C++ Espresso 제1장 기초 사항.
제 3장 프로그래밍 언어 설계 3.1 설계 기준의 역사적 변천 3.2 효율성 3.3 일반성, 직교성, 획일성
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
기본 컴퓨터 프로그래밍 Lecture #6.
Chapter 10 – 추상 자료형 Outline 10.1 소개 10.2 Ada의 추상 자료형 10.3 C++의 추상 자료형
Operating Systems Overview
Ruby on Rails – 1. Ruby Aon의 공부하면서 만드는 세미나 1탄.
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
Internet Computing KUT Youn-Hee Han
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Internet Computing KUT Youn-Hee Han
제9장 추상 데이터 타입 및 모듈 (Abstract Data Type & Module)
Internet Computing KUT Youn-Hee Han
C++ 프로그래밍 2009년 2학기 전자정보공학대학 컴퓨터공학부.
C++ 프로그래밍 2007년 1학기 전자정보공학대학 컴퓨터공학부.
10장 객체-지향 프로그래밍 II ©창병모.
C++ Component System KASA 김성헌.
프로그래밍 언어론 제 9 장 객체 지향 개념 객체 지향 방법론 객체 모델링 객체 지향 언어 C++ 객체 지향 언어 CLOS
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
Chapter 11 Unicast Routing Protocols.
Chapter 9 – 부 프로그램 Outline 9.1 개요 9.2 매개변수 평가와 전달기법 9.3 형식 매개변수 명세
Visual C++ Programming
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
Power Java 제7장 클래스와 객체.
Chapter 2. Finite Automata Exercises
김 정 석 Web Programming 김 정 석
Visual Basic 기초 1 목표: 컴퓨터기반제어에 관련된 학습을 하기 전에 Visual Basic의 기초를 살펴본다.
Power Java 제1장 자바 소개.
계수와 응용 (Counting and Its Applications)
DirectX 3D 7개월차 김성도 3D 5인 프로젝트.
Chapter 2 – 언어의 변천 Outline 2.1 디지털 컴퓨터 이전의 언어
소프트웨어 공학 (Software Engineering)
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
Introduction to Programming Language
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Chapter 4 변수 및 바인딩.
Chapter 02. 소프트웨어와 자료구조.
[ 단원 06 ] 상속과 다형성.
Signature, Strong Typing
Signature, Strong Typing
UML과 객체지향 모델링 UML의 개요 객체지향 모델링.
3장,4장 발표 서정우.
Part 3 객체지향 Chapter 5 : 객체지향 개념 Chapter 6 : 클래스 : 속성
Signature, Strong Typing
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
창 병 모 숙명여대 전산학과 자바 언어를 위한 CFA 창 병 모 숙명여대 전산학과
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
Chapter 14 – 객체 지향 프로그래밍 Outline 14.1 소프트웨어의 재사용과 독립성
Java 5장. 객체지향 개념 public class SumTest {
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
Scalar and composite data
C++ 언어의 특징
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
발 표 자 : 7조 손 창 국 윤 오 성, 박 진 완 객체 지향 프로그래밍 C++
Chapter 7: Deadlocks.
Presentation transcript:

Chapter 13 – 객체 지향 프로그래밍 Outline 13.1 소프트웨어의 재사용과 독립성 13.2 객체, 클래스, 메소드 13.3 상속 13.4 동적 바인딩 13.7 객체 지향 언어 설계 문제

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

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

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

13.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);

< Simula의 클래스, 참조 클래스 선언 예 > 13.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

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

13.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;

13.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;

13.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;

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

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

13.4 동적 바인딩 rectangle class borderedRectangle(border); real border; begin   real procedure area;   begin       area := (width+2.0 * border) * (height + 2.0 *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;

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

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

용 어 정리

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

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

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

object (in programming language) 객체 (프로그래밍 언어에서) 용어 국제 표준 규격 15.09.05 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에서는 “객체”로 구현된다.

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

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

class (in programming language) 클래스 (프로그래밍 언어에서) 용어 국제 표준 규격 15.09.09 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 같은 프로그래밍 언어에서의 자료형과 비교될 수 있다.

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

상속 (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. 내부 구조와 연산 집합의 전체 혹은 부분을 어떤 클래스에서 그 하위 클래스로 복사함.

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

객체 지향 (object-oriented) 용어 국제 표준 규격 15.09.13 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. 객체, 클래스, 상속을 제공하는 기술 또는 프로그래밍 언어의 속성 <주> 일부 기관에서는 객체 지향 프로그래밍에 다음 요구 조건을 열거한다 : 정보 은닉 또는 캡슐화, 자료 추상화, 메시지 전달, 다형성, 동적 바인딩 그리고 상속

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