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

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
Oozie Web API 기능 테스트 이승엽.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
Power Java 제3장 이클립스 사용하기.
3부 객체지향 3부에서는 자바 언어의 핵심인 객체지향의 개념과 클래스, 객체, 상속, 다형성 등의 개념에 관해 설명합니다.
최윤정 Java 프로그래밍 클래스 상속 최윤정
제 2 장 객체지향의 이해.
제 4 장 관계 학기 소프트웨어설계.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
Delphi 2009의 언어 개선 박지훈.임프 2018년 11월 16일 금요일
제9장 추상 데이터 타입 및 모듈 (Abstract Data Type & Module)
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
Chapter 9 – 부 프로그램 Outline 9.1 개요 9.2 매개변수 평가와 전달기법 9.3 형식 매개변수 명세
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
C++ Programming: Sample Programs
6장. 클래스.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
제4장 클래스와 객체 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
제7장 클래스와 객체.
김 정 석 Web Programming 김 정 석
23장. 구조체와 사용자 정의 자료형 2.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
Java 6장. 클래스 : 속성 public class SumTest {
공학컴퓨터프로그래밍 Python 염익준 교수.
자바 5.0 프로그래밍.
26강. 포워딩(Forwarding) RequestDispatcher 클래스 HttpServletResponse 클래스
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
Method & library.
Chapter 11 객체지향 프로그래밍의 기초 01 클래스 02 생성자 03 인스턴스 변수와 클래스 변수 예제 모음 요약
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
Power Java 제11장 상속.
JA A V W. 06.
Chapter 02. 소프트웨어와 자료구조.
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
12. 상속 : 고급.
객체기반 SW설계 팀활동지 4.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
Signature, Strong Typing
Signature, Strong Typing
Chapter 13 – 객체 지향 프로그래밍 Outline 13.1 소프트웨어의 재사용과 독립성
Part 3 객체지향 Chapter 5 : 객체지향 개념 Chapter 6 : 클래스 : 속성
C# 07장. 객체 지향 개념.
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
Signature, Strong Typing
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
발표자 : 이지연 Programming Systems Lab.
.Net FrameWork for Web2.0 한석수
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
7 생성자 함수.
Presentation transcript:

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

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

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

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

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

< 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

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

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;

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;

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;

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

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

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

14.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. 자료 객체의 영역 안에서 실행이 지속되는 동안만 자료 객체에게 저장 공간을 배당함