Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과

Slides:



Advertisements
Similar presentations
Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
Advertisements

노인복지론 담당교수 : 최 병태 교수님 학과 : 보건복지경영학과 학번 : 이름 : 김 태인 날짜 :
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
Chapter 2 정보시스템 아키텍처 (IS Architecture)
C++ Espresso 제1장 기초 사항.
객체지향 프로그래밍.
Chap05 상속 5.1 상속의 개요 5.2 멤버 변수의 상속 5.3 메소드의 상속과 오버라이딩(Overriding)
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
Internet Computing KUT Youn-Hee Han
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
8. 객체와 클래스 (기본).
명품 JAVA Programming.
C++ 프로그래밍 2009년 2학기 전자정보공학대학 컴퓨터공학부.
C++ 프로그래밍 2007년 1학기 전자정보공학대학 컴퓨터공학부.
[INA470] Java Programming Youn-Hee Han
10장 객체-지향 프로그래밍 II ©창병모.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
자바 5.0 프로그래밍.
프로그래밍 언어론 제 9 장 객체 지향 개념 객체 지향 방법론 객체 모델링 객체 지향 언어 C++ 객체 지향 언어 CLOS
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 03. 클래스의 기본.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
윤 홍 란 4 장 클래스 작성 윤 홍 란
2010학년도 2학기 객체지향의 이해.
Power Java 제7장 클래스와 객체.
DataScience Lab. 박사과정 김희찬 (월)
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 08. 상속과 다형성.
This, static, final 지정 예약어 자바 4대 중첩 클래스
김 정 석 Web Programming 김 정 석
C++ 개요 객체지향 윈도우즈 프로그래밍 한국성서대학교 유일선
시스템 분석 및 설계.
Visual Basic 기초 1 목표: 컴퓨터기반제어에 관련된 학습을 하기 전에 Visual Basic의 기초를 살펴본다.
주소록 프로그램.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
2009학년도 1학기 상지대학교 컴퓨터정보공학부 고 광 만
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Java 8장. 상속 public class SumTest {
DataScience Lab. 박사과정 김희찬 (월)
어서와 Java는 처음이지! 제9장 인터페이스, 패키지.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
소프트웨어 공학 (Software Engineering)
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
Web programming Chap 04 상속 김 정 석
Java Chapter 4 ~ 주차.
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
JA A V W. 04.
JA V A W. 07 Sb.L.
Chapter 02. 소프트웨어와 자료구조.
[ 단원 06 ] 상속과 다형성.
제 4 장 클래스 작성 Lab 4- 2.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
Chapter 13 – 객체 지향 프로그래밍 Outline 13.1 소프트웨어의 재사용과 독립성
3장,4장 발표 서정우.
Part 3 객체지향 Chapter 5 : 객체지향 개념 Chapter 6 : 클래스 : 속성
자바 5.0 프로그래밍.
C# 10장. 참조형.
제 14 장 응용 계층과 클라이언트-서버 모델 클라이언트-서버 모델 14.2 동시성 14.3 프로세스 14.4 요약.
Java 5장. 객체지향 개념 public class SumTest {
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
11장 다형성과 추상 클래스, 인터페이스 Section 1 객체의 형 변환 Section 2 연산자 Section 3 다형성
3.1 객체지향(object-oriented)과 절차지향(procedural-oriented) 3.2 객체(object)
C++ 언어의 특징
Part 02 객체지향과 자바 언어의 기본 구조 Chapter 03 객체지향 개념 Chapter 04 자바 기본 구조
1. 객체-지향 프로그래밍.
Presentation transcript:

Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과 절차지향(procedural-oriented) 3.2 객체(object) 3.3 클래스(class) 3.4 상속(inheritance) 3.5 캡슐화(encapsulation) 3.6 메시지(message) 3.7 다형성(polymorphism)

3.1 객체지향과 절차지향 객체지향의 배경 소프트웨어 모듈의 재사용과 독립성을 강조 객체는 고유한 책임할당을 통한 특화된 역할을 담당한다. 객체 효율적인 정보관리를 위하여 의미를 부여하고 분류하는 개념적인 단위 객체 지향(Object-Oriented) 대 절차지향(Procedural-Oriented) 절차지향 : 데이터 구조와 그 데이터를 변화 시키는 알고리즘으로 구성 객체지향 : 객체들이 메시지(message)를 통하여 통신함으로써 원하는 결과를 얻는다. 각 객체는 고유의 데이터와 데이터를 처리할 수 있는 메소드로 구성

객체지향 대 절차지향 공유 데이터 함수 함수 데이터 함수 데이터 데이터 함수 절차지향 객체지향 객체 객체 객체 메소드 메시지 절차지향 객체지향

객체지향의 장점 문제를 쉽고 자연스럽게 프로그램화(모델링) 할 수 있다 쉬운 프로그램의 개발로 인한 생산성 향상 시킬 수 있다 현실세계의 사고방식을 그대로 적용함으로 현실세계의 문제를 자연스럽게 표현이 가능하다 쉬운 프로그램의 개발로 인한 생산성 향상 시킬 수 있다 프로그램 모듈을 재사용 할 수 있다 프로그램의 확장 및 유지 보수가 용이하다

3.2 객체(Object) 객체 효율적으로 정보를 관리하기 위하여, 사람들이 의미를 부여하고 분류하는 논리적인(개념적인) 단위 실세계에 존재하는 하나의 단위에 대한 소프트웨어적 표현 객체의 구성 속성의 값을 나타내는 데이터(data) 데이터를 변경하거나 조작할 수 있는 메소드로 구성

객체의 예 아버지 객체 아들 객체 메소드 데이터 객체는 프로그래머에 의해 모델링 된다 장난감, 자동차, 돈, 과자, 동화책, 장난감을 가지고 논다 운전을 한다 비디오 를 본다 자동차, 돈, 술, 몽둥이, 신문, 담배 돈으로 물건을 산다 과자를 먹는다 장난감, 과자, 동화책, 게임기, 비디오, TV 술을 마신다 동화책 을 읽는다 게임을 한다 담배를 피운다 신문을 읽는다 TV를 본다 몽둥이로 때린다 아버지 객체 아들 객체

3.3 클래스(Class) 객체는 항상 클래스로부터 생성된다. 즉 클래스는 객체를 생성하는 형판(template) 클래스는 두개의 구성요소(member)인 자료구조(필드)와 연산(메소드)을 가진다 클래스로부터 생성된 객체를 instance라 한다. 객체 = instance 정보처리의 주체는 클래스가 아니라 객체이다 객체지향 프로그래밍의 시작은 클래스의 생성이다 클래스로부터 객체의 생성 예 학생1 = new 학생(이기쁨, 남자, 컴퓨터공학과, 2학년) 객체 객체생성 클래스 매개변수 이름 명령어 이름 데이터

클래스 - 클래스로부터 객체의 생성 클래스 객체이름 데이터 메소드 클래스 이름 학생1=new 학생(이기쁨,남자,….); 성별 학과 학년 수강신청 시험보기 성적조회 클래스 이름 학생1=new 학생(이기쁨,남자,….); 학생2=new 학생(신예진,여자,….); 학생3=new 학생(이정순,여자,….); 속성(자료구조) 메소드(연산) 객체생성(instantiation) 학생1 이기쁨 남자 컴퓨터공학과 2학년 수강신청 시험보기 성적조회 학생2 신예진 여자 경영학과 3학년 수강신청 시험보기 성적조회 객체이름 데이터 메소드 학생3 이정순 여자 철학과 4학년 수강신청 시험보기 성적조회 인스턴스 (객체)

3.4 상속(inheritance) 상속관계의 클래스들은 계층구조를 구성할 수 있다 하위 계층의 클래스는 상위 계층의 모든 요소를 상속 받고 추가적으로 필요로 되는 새로운 자료구조와 메소드를 더 가진다 하위 클래스는 상위 클래스를 확장한 개념 상속의 개념을 이용하여 소프트웨어의 재사용(reusing)을 지원

클래스의 계층구조 클래스의 계층 구조 새로운 클래스를 생성할 때 기존 클래스의 하위 클래스로 선언할 수 있다. 새로운 클래스에 속성이나 메소드를 추가하여 기존 클래스를 확장할 수 있다. 클래스는 계층구조를 이룬다. 생물 일반화 - 공통 속성 가짐 - 속성이 간단 특수화 - 상위속성 상속 - 개별속성 추가 - 속성이 많다 동물 식물 새 포유류 물고기 양서류 사람 사자 코끼리 클래스의 계층 구조

+ + + + + + = = = = 클래스계층 구조에서의 상속 관계 속성을 상속하여 새로운 클래스를 생성 : 새로 정의하여 추가한 속성 : 상속하여 재사용하는 속성 = 호흡함 생물 : 상속 경로 = 호흡함 + 걸어 다님 동물 = 호흡함 걸어 다님 + + 젖으로 양육함 포유류 + = 호흡함 걸어 다님 + 젖으로 양육함 + 웃음 사람 속성을 상속하여 새로운 클래스를 생성

상속의 예 person 상위(super) 클래스 student faculity staff 하위(sub) 클래스 undergrad graduate

3.5 캡슐화(encapsulation) 객체를 캡슐화 하여 What만 보여주고 How는 감춘다. 객체를 작성할 때 숨겨야 하는 정보(private)와 공개해야 하는 정보(public)를 구분하여 작성 객체의 사용자는 기능만 알고 사용하며 어떻게 처리되는지는 은폐된다(Information Hiding) 공개된 인터페이스 객체의 사용자들은 공개된 인터페이스를 통해서만 객체에 접근할 수 있다 숨겨진 데이터와 메소드들 public 객체 public public public 숨겨진 데이터에 대한 접근 불가

캡슐화의 장점 객체에 포함된 정보의 손상과 오용을 막을 수 있다. 객체 조작 방법이 바뀌어도 사용방법은 바뀌지 않는다. 객체 조작 방법이 바뀌어도 사용방법은 바뀌지 않는다. 데이터가 바뀌어도 다른 객체에 영향을 주지 않아 독립성이 유지된다. 처리된 결과만 사용하므로 객체의 이식성이 좋다. 객체를 부품화 할 수 있어 새로운 시스템의 구성에 부품처럼 사용할 수 있다.

3.6 메시지(message) 객체에게 일을 시키는 행위 메시지는 세가지 요소로 구성된다 메시지 수신객체 송신객체 메시지를 받을 객체의 이름(주소) 송신객체가 실행을 원하는 수신객체의 메소드 이름 실행을 원하는 메소드에 전달할 매개변수 수신객체 메시지 송신객체 객체이름.메소드(매개변수)

메시지의 예 Point 객체의 메소드 호출 클래스 P의 구조 public class Point1 { P point; 자료구조 int xPosition; int yPosition; boolean status; Color color; Point 객체의 메소드 호출 public class Point1 { P point; public static void main(String args[]) { point = new P(); // 객체의 생성 point.move(10,10); // 메시지 사용 point.setColor(blue); point.penUp(); point.penDown(); } void move(int x, int y); void setColor(Color c); void penUp(); void penDown(); 클래스 P의 구조

클래스 계층구조에서의 메시지 처리 상위 클래스에서 메소드 탐색 계속하여 상위 클래스를 탐색 소속 클래스에서 메소드 탐색 메소드1 메소드 5 자료 구조 자료 구조 메소드 2 메소드 4 상속 상속 메소드 6 메소드3 소속 클래스에서 메소드 탐색 메시지 도착 객체 고유 데이터 객체 고유 데이터 객체1 객체2 (객체들은 자신이 가지는 고유의 데이터만 가지고 생성되며 메소드는 클래스에 있는 것을 공유 한다)

3.7 다형성(Polymorphism) “one interface, multiple implementation” 하나의 인터페이스를 사용하여 다양한 구현 방법을 제공 Polymorphism = 다양한(poly) + 변신(morphism)

다형성(Polymorphism) A A1 A2 A3 A superobject = new A1(); 상위클래스 타입의 객체 변수에 하위 클래스에서 생성된 객체를 할당

다형성(Polymorphism) 모형 draw() 타원 draw() { 타원을 그린다 } 삼각형 draw() { 삼각형을 사각형 draw() { 사각형을 그린다 }

다형성(Polymorphism) 모형 A ; // 상위 클래스 타입의 객체 변수 A 선언 A = new 타원(); // 상위 클래스 타입의 객체 변수 A에 타원 클래스의 객체를 생성하여 할당 A.draw(); // 타원 클래스에 기술된 draw() 메소드를 수행하여 선언된 타원을 그린다 A = new 사각형(); // 상위 클래스 타입의 객체 변수 A에 사각형 클래스의 객체를 생성하여 할당 // 사각형 클래스에 기술된 draw() 메소드를 수행하여 선언된 타원을 그린다 ………………….. 모형에서 선언된 draw() 메소드는 할당되는 하위 클래스의 객체에 따라 다양한 변신을 시도하여 서로 다른 결과를 나타낸다 메시지에서 요구한 메소드(draw())의 매핑을 동적으로(실행시간) 수행