Part 02 객체지향과 자바 언어의 기본 구조 Chapter 03 객체지향 개념 Chapter 04 자바 기본 구조

Slides:



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

컴퓨터와 인터넷.
5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
10. 예외 처리.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
3부 객체지향 3부에서는 자바 언어의 핵심인 객체지향의 개념과 클래스, 객체, 상속, 다형성 등의 개념에 관해 설명합니다.
최윤정 Java 프로그래밍 클래스 상속 최윤정
5장. 객체지향과 클래스.
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
제 2 장 객체지향의 이해.
제 4 장 관계 학기 소프트웨어설계.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제9장 추상 데이터 타입 및 모듈 (Abstract Data Type & Module)
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
5장. 참조 타입.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
제4장 클래스와 객체 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
제7장 클래스와 객체.
김 정 석 Web Programming 김 정 석
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
[INA470] Java Programming Youn-Hee Han
Choi, Namseok Java 기초 (객체와 클래스) Choi, Namseok
7장 인터페이스와 추상 클래스.
Method & library.
JA A V W. 03.
자바 5.0 프로그래밍.
Chap 6.Assembler 유건우.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Effective Java [Issue 1 and 2]
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
6강. 객체지향 프로그램의 시작 객체지향 이전의 프로그래밍 객체지향의 등장 배경과 이해 메소드의 이해
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
Power Java 제11장 상속.
JA A V W. 06.
Chapter 02. 소프트웨어와 자료구조.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
C# 07장. 객체 지향 개념.
클래스 : 기능 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 한석수
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
3.1 객체지향(object-oriented)과 절차지향(procedural-oriented) 3.2 객체(object)
자바 객체 지향 프로그래밍 Ps lab 김윤경.
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
6 객체.
Presentation transcript:

Part 02 객체지향과 자바 언어의 기본 구조 Chapter 03 객체지향 개념 Chapter 04 자바 기본 구조 Chapter 06 JVM과 메모리 Chapter 07 상속 Chapter 08 인터페이스와 패키지 Chapter 09 예외 처리 Chapter 10 다중 스레드

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

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

1. 객체지향과 절차지향 객체지향의 장점 문제를 쉽고 자연스럽게 프로그램화(모델링) 할 수 있다 쉬운 프로그램의 개발로 인한 생산성 향상 시킬 수 있다 프로그램 모듈을 재사용 할 수 있다 프로그램의 확장 및 유지 보수가 용이하다

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

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

3. 클래스(Class) 객체는 항상 클래스로부터 생성된다. 즉 클래스는 객체를 생성하는 형판(template) 클래스는 두개의 구성요소(member)인 자료구조(필드)와 연산(메소드)을 가진다 클래스로부터 생성된 객체를 instance라 한다. 객체 = instance 정보처리의 주체는 클래스가 아니라 객체이다 객체지향 프로그래밍의 시작은 클래스의 생성이다 NO 클래스 객체 정보처리 OK

3. 클래스(Class) 클래스로부터 객체의 생성 학생1 = new 학생(이기쁨, 남자, 컴퓨터공학과, 2학년) 예 : 객체 객체생성 클래스 매개변수 이름 명령어 이름 데이터

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

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

4. 상속(Inheritance) 클래스의 상속 클래스 클래스 이름 속성(자료구조) 메소드(연산) 상속 추가된 속성과 메소드 상속 (inheritance) 클래스 이름 속성(자료구조) 메소드(연산) 클래스 학생-high 이름 성별 학과 학년 수강신청 시험보기 성적조회 학생-low 컨닝횟수 컨닝하기

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

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

4. 상속(Inheritance) 클래스계층 구조에서의 상위 클래스와 하위 클래스 student faculty staff 상위(super) 클래스 하위(sub) 클래스 person student faculty staff undergraduate graduate

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

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

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

6. 메시지(message) 메시지의 예 Point 객체의 메소드 호출 public class Point1 { P point; 자료구조 int xPosition; int yPosition; boolean status; Color color; 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의 구조

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

7. 다형성(Polymorphism) Polymorphism = 다양한(poly) + 변신(morphism) “one interface, multiple implementation” : 하나의 인터페이스를 사용하여 다양한 구현 방법을 제공 다형성의 정의 서로 다른 객체가 동일한 메시지에 대하여 서로 다른 방법으로 응답할 수 있는 기능 “서로 다른 객체”의 예 “삼각형A” 객체와 “사각형A”객체는 서로 다른 객체이다 상위 클래스 하위 클래스 삼각형A 사각형A 삼각형 사각형 모형

7. 다형성(Polymorphism) “동일한 메시지”의 예 “서로 다른 방법”으로 응답하는 예 삼각형A.draw();

7. 다형성(Polymorphism) 다형성의 예 : 클래스 계층 구조 모형 draw() 상위 클래스에 추상 메소드 하위 클래스에서 상속 받은 추상 메소드의 구현부분 선언 사각형 { 사각형을 그린다 } 삼각형 { 삼각형을 타원 { 타원을

7. 다형성(Polymorphism) 다형성의 예 : 구현 부분 모형 shapes1 = new 사각형(); // 모형 타입의 객체(변수)에 사각형 클래스로부터 객체를 생성하여 배정 // 상위 클래스 타입의 객체변수에 하위클래스로부터 생성된 객체 배정 가능 모형 shapes2 = new 삼각형(); 모형 shapes3 = new 타원(); shapes1.draw();  //사각형을 그린다 shapes2.draw();  //삼각형을 그린다 shapes3.draw();  //타원을 그린다 // 다형성의 전형적인 형태. 하나의 명령(draw())으로 3개의 다른 모형을 그린다

8. 객체지향의 개념과 자바 프로그램 class A { private int result1; public int add(int x,int y) { result1 = x + y; return result1; } public int subtraction(int x,int y) { result1 = x - y; class B extends A { private int result2; public int multi(int x,int y) { result2 = x * y; return result2; public int divide(int x,int y) { result2 = x / y; 클래스 생성 메소드 생성 클래스 A로부터 상속받아 클래스 B 생성 클래스 B는 A로부터 상속되었으므로 A의 메소드를 사용할 수 있다 클래스 내부 에서만 사용 하는 은폐된 변수

8. 객체지향의 개념과 자바 프로그램 class TestAB public static void main(String args[]) { int temp; A objecta = new A(); B objectb = new B(); temp = objecta.add(10,20); System.out.println( A의 add 수행결과 + temp); temp = objectb.add(1,2); System.out.println( B의 add 수행결과 + temp); temp = objectb.multi(2,2); System.out.println( B의 multi 수행결과 + temp); temp = objecta.multi(20,20); System.out.println( A의 multi 수행결과 + temp); } 클래스로부터 객체 생성 objecta 객체는 multi() 메소드를 가지고 있지 않으므로 에러를 발생 객체에게 메시지를 보낸다 objectb 객체는 메소드 add()를 가지고 있지 않지만 상위 클래스를 탐색 하여 add() 메소드를 수행