3부 객체지향 3부에서는 자바 언어의 핵심인 객체지향의 개념과 클래스, 객체, 상속, 다형성 등의 개념에 관해 설명합니다.

Slides:



Advertisements
Similar presentations
프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
Advertisements

컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
(1.1 v) 엔트리교육연구소 엔트리 카드게임 설명서.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
5장. 객체지향과 클래스.
Entity Relationship Diagram
제 2 장 객체지향의 이해.
제 4 장 관계 학기 소프트웨어설계.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
뇌를 자극하는 Windows Server 2012 R2
블록 속성 정의와 추출 속성 정의 블록을 만들 객체들에 문자를 사용하여 속성을 설명하는 꼬리표에 해당하는 태그를 정의하는
20장. Hyper-V 설치와 운영(64bit 전용)
19장 스윙과 이벤트 처리 Section 1 스윙 컴포넌트 Section 2 이미지 아이콘과 라벨
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
9강. AOP(Aspect Oriented Programming)-I
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
자바 5.0 프로그래밍.
제7장 클래스와 객체.
10장. 예외처리.
자바 5.0 프로그래밍.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
7장 인터페이스와 추상 클래스.
Method & library.
자바 5.0 프로그래밍.
14강. 추상클래스 - I - 추상클래스의 이해 - 추상클래스가 필요한 이유 - 추상클래스의 문법
29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
04. DBMS 개요 명지대학교 ICT 융합대학 김정호.
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
Power Java 제11장 상속.
Part 1 개요 Chapter 1 : 컴퓨터와 프로그램 그리고 자바 Chapter 2 : 자바의 환경
20강 패턴을 통한 객체지향 언어의 이해 - II - 난이도 있는 패턴 예제 - I Lecturer Kim Myoung-Ho
9강. 클래스 실전 학사 관리 프로그램 만들기 프로그래밍이란 결국 데이터를 효율적으로 관리하기 위한 공구
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
JA A V W. 06.
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
객체기반 SW설계 팀활동지 4.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
C# 07장. 객체 지향 개념.
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
3. 모듈 (5장. 모듈).
학습내용 프로토콜 계층화 OSI 모델의 용어 및 기능 개체 서비스 접근점 (N) 프로토콜과 (N) 서비스 서비스 프리미티브
발표자 : 이지연 Programming Systems Lab.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
.Net FrameWork for Web2.0 한석수
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
Part 02 객체지향과 자바 언어의 기본 구조 Chapter 03 객체지향 개념 Chapter 04 자바 기본 구조
7 생성자 함수.
6 객체.
Presentation transcript:

3부 객체지향 3부에서는 자바 언어의 핵심인 객체지향의 개념과 클래스, 객체, 상속, 다형성 등의 개념에 관해 설명합니다. 3부 객체지향 3부에서는 자바 언어의 핵심인 객체지향의 개념과 클래스, 객체, 상속, 다형성 등의 개념에 관해 설명합니다. Chapter 7 : 객체 지향 개념 Chapter 8 : 클래스-속성 Chapter 9 : 클래스-기능 Chapter 10 : 상속 Chapter 11 : 다형성과 추상클래스, 인터페이스 1

7장 객체지향 개념 Section 1 객체 지향의 개요 Section 2 클래스와 객체 Section 3 상속

학습목표 이 장에서는 객체 지향의 5대 핵심 개념에 관해 학습합니다. 이 장에서는 개념에 관해서만 기술합니다. 이러한 개념이 자바 프로그램으로 적용되는 부분은 뒤의 해당 부분에서 자세하게 기술합니다. 객체 지향의 개요와 절차 지향과의 차이점을 학습합니다. 클래스와 객체를 학습합니다. 객체의 생성 과정을 예제를 통하여 학습합니다. 상속의 개념을 예제를 통하여 학습합니다. 캡슐화의 개념과 예를 학습합니다. 추상화와 다형성의 개념을 학습합니다.

1-1 객체지향의 개념 객체지향(Object-Oriented)이론 실세계의 사물 = 속성 + 기능으로 구성 1 객체지향의 개요 1-1 객체지향의 개념 객체지향(Object-Oriented)이론 컴퓨터를 통하여 실세계와 같은 환경을 흉내(simulation)내기 위해 발전한 이론 실세계의 사물 = 속성 + 기능으로 구성

1 객체지향의 개요 1-2 객체지향의 역사 객체 지향 이론은 1960년대 클래스, 상속, 캡슐화, 다형성 등의 개념을 중심으로 발전하였으며, 1960년 노르웨이의 달Dahl과 뉘고르Nygaard가 개발한 시뮬라라는 언어를 최초의 객체 지향 언어라 할 수 있다.

1-3 객체지향의 장점 객체지향의 장점 문제를 쉽고 자연스럽게 프로그램화(모델링) 할 수 있다. 1 객체지향의 개요 1-3 객체지향의 장점 객체지향의 장점 문제를 쉽고 자연스럽게 프로그램화(모델링) 할 수 있다. 쉬운 프로그램의 개발로 인한 생산성을 향상시킬 수 있다. 프로그램 모듈을 재사용할 수 있다.

1 객체지향의 개요 1-4 객체지향의 장점 객체지향의 장점

2 클래스와 객체 클래스 하나의 클래스로부터 여러 개의 객체를 생성하기 위해 사용하는 형판

2 클래스와 객체 2-1 클래스(객체)의 구성 객체 “속성+기능”으로 구성 객체를 생성하는 클래스 역시 “속성+기능”으로 구성

2 클래스와 객체 2-1 클래스(객체)의 구성

2 클래스와 객체 2-2 객체의 생성과 프로그램의 실행 클래스로부터 객체를 생성하는 과정을 실체화(instantiation)라고 하고, 객체를 인스턴스(instance)라 부르기도 합니다. 즉 객체와 인스턴스라는 말은 같은 용어로 간주

2 클래스와 객체 2-2 객체의 생성과 프로그램의 실행 예제 7.2

기존 클래스의 기능을 가지면서 추가적인 기능을 가진 클래스를 만들려면 어떻게 해야 할까요? 3. 상속 기존 클래스의 기능을 가지면서 추가적인 기능을 가진 클래스를 만들려면 어떻게 해야 할까요? 기존 클래스를 그대로 복사하고, 추가적인 기능을 추가하는 방법 이 방법은 코드의 중복이라는 문제와, 추후 중복된 코드가 변경 되었을 때의 복잡한 수정(복사한 곳을 다 수정해야 하는 문제 발생) 문제가 발생. 객체 지향에서는 이러한 문제를 상속이라는 기능으로 해결 즉 새로운 클래스를 만들 때 상위 클래스를 지정함으로써 상위 클래스의 모든 속성과 기능을 상속받고, 자신의 상속의 개념은 확장(extend)의 개념으로 상위클래스를 그대로 상속받고 추가로 확장되는 개념

3. 상속

2 클래스와 객체 2-1 클래스와 객체의 구성

2 클래스와 객체 2-1 클래스와 객체의 구성

2-1 클래스와 객체의 구성 클래스의 상속은 확장(extend)의 개념으로 계층 구조를 가질 수 있다 2 클래스와 객체 2-1 클래스와 객체의 구성 클래스의 상속은 확장(extend)의 개념으로 계층 구조를 가질 수 있다 상위 계층으로 갈수록 공통점은 일반화되고 간단해진다. 하위 계층으로 갈수록 클래스는 특수화되고 개별화된다.

2 클래스와 객체 2-1 클래스와 객체의 구성 클래스 계층 구조에서 상속의 예

2-1 클래스와 객체의 구성 클래스 상속의 이점 소프트웨어 설계를 간단하게 할 수 있는 장점 코드를 간결하게 할 수 있다 2 클래스와 객체 2-1 클래스와 객체의 구성 클래스 상속의 이점 소프트웨어 설계를 간단하게 할 수 있는 장점 코드를 간결하게 할 수 있다 코드의 재 사용성을 높인다

캡슐화 감기에 걸렸을 때 먹는 캡슐약과 같은 개념 4 캡슐화(Encapsulation) 캡슐화 감기에 걸렸을 때 먹는 캡슐약과 같은 개념 캡슐 약에는 많은 성분이 포함되어 있지만, 단순히 감기를 낫게 해 준다고 생각

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

4 캡슐화(Encapsulation)

5 메시지(Message) 메시지 객체에 일을 시키는 행위 객체 사이의 메시지 전달

5 메시지(Message) 메시지의 예

5-1 메소드의 탐색 상속된 구조에서의 메소드 탐색 최 상위 클래스에도 탐색하고자 하는 메소드가 없는 경우 오류 발생 5 메시지(Message) 5-1 메소드의 탐색 상속된 구조에서의 메소드 탐색 최 상위 클래스에도 탐색하고자 하는 메소드가 없는 경우 오류 발생

6 추상화(Abstraction) 실세계의 문제를 객체로 전환할 때 중요한 개념 추상화는 복잡한 문제들 중에 공통적인 부분을 추출하여 추상 클래스로 제공하고, 상속을 이용하여 나머지 클래스들을 하위 클래스로 제공하는 기법

6 추상화(Abstraction) 추상화를 하지 않을 경우에 도형을 그리는 문제

6 추상화(Abstraction) 추상화를 적용하여 도형을 그리는 문제

다형성(Polymorphism) 객체지향의 중요한 개념 중에 하나로서 다양한(poly) 변신(morphism)을 의미 서로 다른 객체가 동일한 메시지에 대하여 서로 다른 방법으로 응답할 수 있는 기능

학습 정리 객체 지향의 개요 클래스와 객체 ① 객체 지향은 실세계의 요소들을 “속성+기능”으로 표현한 것입니다. ② 자바는 객체 지향의 역사적 측면에서 볼 때 대표적으로 성공한 언어입니다. ③ 절차 지향은 기능 중심과 자료와 절차의 분리에서 오는 문제점을 가진 언어입니다. ④ 소프트웨어 개발 분야에서 약 60% 가까이 객체 지향 언어가 사용되고 있습니다. ⑤ 객체 지향은 우리들의 실세계를 그대로 반영할 수 있는 프로그래밍 방법입니다. 클래스와 객체 ① 클래스는 객체를 생성하는 형판template 역할을 합니다. ② 하나의 클래스로부터 다수 개의 객체가 생성됩니다. ③ 클래스는 “속성+기능”으로 구성됩니다. ④ 클래스로부터 객체를 생성하는 과정을 실체화instantiation라고 하며, 객체를 인스턴스라부르기도 합니다. ⑤ 객체 지향은 절차 지향과는 달리 프로그램의 기본 단위가 객체(속성+기능)입니다.

학습 정리 상속 캡슐화 ① 캡슐화는 꼭 필요한 내용만 보여 주고, 불필요한 내용을 감춘다는 개념입니다. ① 상속을 이용하여 비슷한 기능을 가진 클래스들을 계층 구조 형태로 구성할 수 있습니다. ② 상속은 상위 클래스의 모든 속성과 기능을 상속받고, 추가로 더 가지는 확장extend의 개념입니다. ③ 자바에서는 하나의 클래스만을 상위 클래스로 가질 수 있습니다. 즉 다중 상속을 허용하지 않습니다. ④ 클래스의 상속을 나타내는 계층 구조에서 상위로 올라갈수록 일반화된 공통 속성을 가지며 하위로 내려갈수록 개별 클래스가 가지는 개별화가 이루어집니다. 캡슐화 ① 캡슐화는 꼭 필요한 내용만 보여 주고, 불필요한 내용을 감춘다는 개념입니다. ② 클래스를 작성할 때는 꼭 필요한 내용만 공개해야 합니다. ③ 클래스를 작성할 때 캡슐화 개념을 적용하지 않으면, 클래스가 잘못 사용될 수 있습니다. ④ 캡슐화의 개념을 적용하여 정보 은폐Information hiding를 달성할 수 있습니다.

학습 정리 메시지 추상화 다형성 ① 생성된 객체들 사이의 상호 관계를 정의한 것이 메시지입니다. ② 객체들은 메시지를 통하여 상대 객체에게 일을 시킵니다. ③ 메시지는 객체 이름, 메소드 이름, 메소드 수행에 필요한 인자argument를 포함합니다. ④ 상속 관계의 클래스 구조에서 메소드가 호출되면 자신의 클래스에서 메소드를 탐색하고, 없을 경우 상위 클래스의 메소드를 탐색합니다. 이러한 과정을 반복적으로 거쳐도메소드가 발견되지 않는 경우는 오류가 발생됩니다. 추상화 ① 실세계의 문제를 객체로 변환할 때 적용할 수 있는 개념입니다. ② 여러 개의 문제에서 공통적인 속성을 추출하여 상위 클래스에 작성하고, 나머지 클래스를 하위 클래스로 구성하는 것이 추상화의 핵심입니다. ③ 추상화와 상속은 다형성을 제공하는 기반입니다. 다형성 ① 다형성은 다양한 변신을 의미하는 개념입니다. ② 다형성은 서로 다른 객체가 동일한 메시지에 대하여 서로 다른 방법으로 응답할 수 있는 기능으로 정의할 수 있습니다. ③ 다형성을 구현하기 위해서는 상속과 추상 클래스를 이용합니다.

수고하셨습니다. 제출 연습 문제를 잘 풀어서 제출해주시기 바랍니다 (다음 주 제출 문제 발표는?) 수고하셨습니다. 제출 연습 문제를 잘 풀어서 제출해주시기 바랍니다 (다음 주 제출 문제 발표는?) 33