Presentation is loading. Please wait.

Presentation is loading. Please wait.

2010학년도 2학기 객체지향의 이해.

Similar presentations


Presentation on theme: "2010학년도 2학기 객체지향의 이해."— Presentation transcript:

1 2010학년도 2학기 객체지향의 이해

2 이번 시간의 학습목표 이번 시간을 정상적으로 이수하면 학생들은 객체지향 개념을 설명할 수 있다
객체지향의 원리에 대해 설명할 수 있다 추상화(Abstraction) 상속(Inheritance) 다형성(Ploymorphism) 캡슐화(Encapsulation) 메시지 전송(Message Sending) 연관(Association) 집합연관(Aggregation)

3 객체 - 어디서나 볼 수 있는 객체 (1) 객체(Object)란? 현대의 소프트웨어 객체
실세계(현실)에 존재하는 사물(물체)이나 개념 현대의 소프트웨어 실세계를 그대로 혹은 약간 본떠 만듦 즉, 우리 주변의 객체를 프로그램으로 흉내내는 것 객체 클래스의 한 인스턴스 구조(structure)를 가짐 특성(Feature) = 속성(Attribute) + 행동(Behavior)

4 객체 - 어디서나 볼 수 있는 객체 (2) 클래스(Class) 비슷한 속성과 공통적인 행동수단을 지닌 것들의 범주 / 그룹
객체를 생성하는 틀 혹은 템플릿(Template) : 붕어빵 기계 속성(Attribute)과 행동(Behavior)으로 정의 속성과 행동이 더 많이 반영될수록 현실세계에 더 가까운 모델 Washing Machine brandName modelName serialName capacity drumVolume internalTimer trap motor motorSpeed addClothes( ) addDetergent( ) removeClothes( ) addBleach( ) timeTheSoak( ) timeTheWash( ) timeTheRinse( ) timeTheSpin( ) Washing Machine brandName modelName serialName capacity addClothes( ) addDetergent( ) removeClothes( )

5 C# 프로그램에서의 클래스와 객체 using System; class Profile { private int age = 23;
public string name = “돌이”; private string phone = “ ”; public void PrintInfo( ) Console.WriteLine(“My name is {0}”, name); Console.WriteLine(“My age is {0}”, age); Console.WriteLine(“My phone number is {0}”, phone); } class Access public static void Main( ) Profile MyProfile = new Profile( ); MyProfile.PrintInfo( );

6 java 프로그램에서의 클래스와 객체 class Profile { private int age = 23;
public string name = “순이”; private string phone = “ ”; public void PrintInfo( ) System.out.println(“My name is ” + name); System.out.println(“My age is ” + age); System.out.println(“My phone number is ” + phone); } public static void Main(String args[ ]) Profile MyProfile; MyProfile = new Profile( ); MyProfile.PrintInfo( );

7 객체 지향의 몇 가지 개념(1) 추상화(Abstraction)
객체를 모델링할 때 필요로 하는 만큼의 속성과 오퍼레이션을 추출하는 것 객체의 용도에 따라 속성과 오퍼레이션이 달라질 수 있음 복잡성을 줄여서 단순하게 표현하는 것 예) 세탁기(제조기술자, 세탁물 출입관리 프로그램) 예)자동차(세무공무원, 중고딜러) Car carType displacement age residence addTax( )

8 객체 지향의 몇 가지 개념(2) 상속(Inheritance)
객체는 클래스의 한 인스턴스로 클래스의 속성과 오퍼레이션을 물려 받음 클래스는 객체의 탬플릿 (예) 붕어빵 기계와 붕어빵 서브 클래스는 수퍼 클래스의 속성과 오퍼레이션을 물려 받음 Appliance HouseholdItem Appliance Furniture

9 객체 지향의 몇 가지 개념(3) using System; class Parent { protected string name;
protected int age; private int inheritedMoney; } class Son : Parent public Son( ) this.name = “아들”; this.age = 7; public void PrintInfo( ) { …… } class Inheritance public static void Main( ) class Car { int velocity; int wheelNum; String carName; Car( ) } void speedUp( int speed) velocity += speed; class Truck extends Car int ton; class Taxi extends Car boolean isPrivate; ……

10 객체 지향의 몇 가지 개념(4) 다형성(Ploymorphism)
동일한 이름의 오퍼레이션이라도 오퍼레이션이 일어나는 클래스에 따라 행동이 다름 각 클래스마다 자신의 오퍼레이션이 어떻게 행동하는 지를 앎 (예) open open door, open window, open newspaper, open present, open account, open conversation

11 객체 지향의 몇 가지 개념(5) 캡슐화(Encapsulation)
객체는 자신의 오퍼레이션을 수행하고 결과를 내놓지만, 오퍼레이션의 동작원리는 숨겨져 있음 객체는 자신의 동작원리를 클래스라는 껍데기로 캡슐화함(숨김) 정보은닉(Information Hiding)이라고 부르기도 함 (예) TV 소프트웨어 세계에서 불의의 사고를 사전 차단 한 객체의 오퍼레이션 수정이 다른 객체에 영향을 안 주므로 결국 다른 객체를 고칠 필요가 없음 (예) 컴퓨터시스템에서의 모니터 객체는 얼굴(Face)만 보임으로써 그 객체가 수행하는 오퍼레이션을 다른 객체나 외부세계에서 지시할 수 있도록 함. 이를 인터페이스(Interface)라 함 (예) 세탁기의 다이얼, TV 본체의 버튼, 리모콘의 버튼 컴포넌트 기반 프로그래밍이 가능해지게 됨

12 객체 지향의 몇 가지 개념(6) 메시지 전송(Message Sending)
(예) TV와 리모콘 객체는 여러 가지의 인터페이스를 제공함 (예) TV의 인터페이스 (사람에게 제공하는 인터페이스 : 버튼, 리모콘에게 제공하는 인터페이스 : 적외선 수신기) message to turn on

13 객체 지향의 몇 가지 개념(7) 연관(Association) 한 객체와 다른 객체 간의 관계
단방향성(unidirectional; TV를 켜다)과 양방향성(bidirectional; 결혼하다) 다중성(Multiplicity) : 두개 이상의 연관 기타 다중성의 예는? is married to turn on is married to rides in is a coworker of is a friend of rides in

14 객체 지향의 몇 가지 개념(8) 집합연관(Aggregation) 전체/부분(whole/part)의 관계
즉, 구성요소 들이 모여서 시스템을 구성함 (예) PC 시스템

15 객체 지향의 몇 가지 개념(9) 복합연관(Composition) 집합연관과 밀접한 관계, 집합연관의 특별한 종류
컴포넌트가 복합체(Composite) 내에서만 컴포넌트로 존재 (예) 셔츠에서의 소매 (예) 복합체보다 컴포넌트가 먼저 죽는 경우 : 나무와 나뭇잎 (예) 복합체가 없어지면 컴포넌트도 없어짐 : 나무와 나뭇잎

16 결론은 ? 모든 시스템의 중심은 객체와 객체 사이의 연관관계를 이해하는 것 의뢰인의 요구사항을 조사할 때
가장 중요한 것은 의뢰인의 지식 도메인(Knowledge Domain)을 빨리 이해하는 것 - UML

17 이번 시간의 학습요약 객체지향 개념 객체와 클래스 속성과 행동 객체지향의 원리 추상화(Abstraction)
상속(Inheritance) 다형성(Ploymorphism) 캡슐화(Encapsulation) 메시지 전송(Message Sending) 연관(Association) 집합연관(Aggregation)


Download ppt "2010학년도 2학기 객체지향의 이해."

Similar presentations


Ads by Google