Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java 5장. 객체지향 개념 public class SumTest {

Similar presentations


Presentation on theme: "Java 5장. 객체지향 개념 public class SumTest {"— Presentation transcript:

1 Java 5장. 객체지향 개념 public class SumTest {
public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 System.out.println("두수의 합은 " + sum + "입니다"); }

2 학습목표 이 장에서는 객체지향의 4대 핵심 개념에 관해 학습한다. 객체지향의 개요와 절차지향과의 차이점을 학습한다.
클래스와 객체를 학습한다. 객체의 생성과정을 예제를 통하여 학습한다. 상속의 개념을 예제를 통하여 학습한다. 캡슐화의 개념과 예를 학습한다. 다형성의 개념을 학습한다.

3 목차 section 1 객체지향의 개요 section 2 클래스와 객체 section 3 상속(Inheritance)
1-1 객체지향 이론과 역사 1-2 객체지향과 절치지향 1-3 객체지향의 장점 section 2 클래스와 객체 2-1 클래스와 객체의 구성 2-2 객체의 생성 section 3 상속(Inheritance) section 4 캡슐화 (Encapsulation) section 5 메시지(Message) section 6 다형성(Polymorphism)

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

5 1 객체지향의 개요 1-1 객체지향 이론과 역사 객체지향 언어의 역사 166 page

6 1-2 객체지향과 절치지향 절차지향 언어 객체지향 언어 1 객체지향의 개요
프로그램의 기본 단위는 절차(procedure) 또는 함수(fuction)로 정의 객체지향 언어 프로그램의 기본단위가 객체 객체는 “속성+기능”으로 구성

7 1 객체지향의 개요 1-2 객체지향과 절차지향 절차지향과 객체지향 167 page

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

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

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

11 2-1 클래스와 객체의 구성 실습예제 2 클래스와 객체
2-1 클래스와 객체의 구성 실습예제 다음은 성적의 평균을 구하는 클래스를 정의한 예이다. 일반적으로 객체지향에서 속성은 필드, 데이터, 속성변수, 객체 변수 등 다양한 용어를 사용하고, 기능은 메소드(method)라는 용어를 사용한다. 170 page

12 2-1 클래스와 객체의 구성 실습예제 2 클래스와 객체 자바로 작성된 클래스의 예 AvgTest.java 01 02 03 04
2-1 클래스와 객체의 구성 실습예제 자바로 작성된 클래스의 예 AvgTest.java 01 02 03 04 05 06 07 08 09 class Avg { String name; int avg; public String average(int kor, int eng) { avg = (kor+eng)/2; return name+avg; } 속성 기능

13 2-2 객체의 생성 실체화(instantiation) 실습예제 2 클래스와 객체 클래스로부터 객체를 생성하는 과정
2-2 객체의 생성 실체화(instantiation) 클래스로부터 객체를 생성하는 과정 인스턴스(instance)라 부름 실습예제 위에서 작성된 평균을 구하는 클래스로부터 객체를 생성하는 예를 살펴보자. 평균을 구하는 클래스로부터 객체를 생성 171 page

14 2-1 클래스와 객체의 구성 실습예제 2 클래스와 객체 AvgTest.java 01 02 03 04 05 06 07 08 09
2-1 클래스와 객체의 구성 실습예제 AvgTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 public class AvgTest { public static void main(String[] args) { Avg student1 = new Avg(); Avg student2 = new Avg(); student1.name = "김철수"; student2.name = "김영희"; String st1_avg = student1.average(70,80); String st2_avg = student2.average(80,90); System.out.println(st1_avg); System.out.println(st2_avg); } student1 객체 생성 student2 객체 생성 생성된 객체의 속성에 서로 다른 값을 저장

15 2-1 클래스와 객체의 구성 프로그램 설명 2 클래스와 객체 03 : student1 객체를 생성한다.
2-1 클래스와 객체의 구성 프로그램 설명 03 : student1 객체를 생성한다. 04 : student2 객체를 생성한다. 05~06 : 생성된 student1과 student2 객체의 각 속성에 서로 다른 값을 저장한다.

16 상속 3 상속(Inheritance) 기존 클래스로부터 모든 속성과 메소드를 상속
더 필요한 속성과 메소드를 추가하여 새로운 클래스를 생성

17 3 상속(Inheritance) 실습예제 앞 절에서 사용한 평균을 구하는 클래스에 총점을 구하는 방법이 추가된 클래스를 상속을 이용하여 작성해보자. 173 page

18 실습예제 3 상속(Inheritance) AvgTest1.java 01 02 03 04 05 06 07 08 09 10 11
12 13 14 15 16 class Avg1 { String name; int avg; public String average(int kor, int eng) { avg = (kor+eng)/2; return name+avg; } class Avg1Total extends Avg1 { public int total(int kor, int eng) int score = kor + eng; return score; 상위 클래스 정의 상위 클래스를 상속받아 하위 클래스 정의

19 실습예제 3 상속(Inheritance) AvgTest1.java 17 18 19 20 21 22 23 24 25 26 27
28 29 30 public class AvgTest1 { public static void main(String[] args) { Avg1Total student1 = new Avg1Total(); Avg1Total student2 = new Avg1Total(); student1.name = "김철수"; student2.name = "김영희"; String st1_avg = student1.average(70,80); String st2_avg = student2.average(80,90); int st1_total = student1.total(70,80); int st2_total = student2.total(80,90); System.out.println(st1_avg+" 총점=" + st1_total); System.out.println(st2_avg+" 총점=" + st2_total); } Avg1Total 객체 생성 상속받은 속성값 설정 생성된 객체에서 정의된 메소드 호출

20 프로그램 설명 3 상속(Inheritance) 1~0 : Avg1 클래스를 정의한다.
10~16 : Avg1 클래스를 상속받아 Avg1Total 클래스를 정의한다. : Avg1Total 클래스에 total 메소드를 추가한다. 19~20 : Avg1 클래스를 상속받은 Avg1Total 클래스로부터 객체를 생성한다. 21~22 : Avg1으로부터 상속받은 name 속성의 값을 설정한다. 25~26 : Avg1Total 클래스에서 새로 정의한 total 메소드를 호출한다.

21 클래스의 상속은 확장(extend)의 개념을 가짐
3 상속(Inheritance) 클래스의 상속은 확장(extend)의 개념을 가짐 상위 클래스의 모든 것을 상속받고 추가로 더 가지는 클래스를 구성하는 것 클래스의 계층 구조 175 page

22 3 상속(Inheritance) 클래스 계층 구조에서의 상속 176 page

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

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

25 실습예제 4 캡슐화(Encapsulation) AvgTest2.java 01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 class Avg2 { public String name; private int avg; public String average(int kor, int eng) { avg = (kor+eng)/2; return name+avg; } public class AvgTest2 { public static void main(String[] args) { Avg2 student1 = new Avg2(); student1.name = "김철수"; student1.avg = 100; 공개되는 속성 공개되지 않는 속성 공개된 속성에 접근. 오류 발생하지 않음 공개되지 않은 속성에 접근. 오류 발생

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

27 5 메시지(Message) 상속된 구조에서의 메소드 탐색 180 page

28 실습예제 5 메시지(Message) AvgTest1.java 01 02 03 04 05 06 07 08 09 10 11 12
public class AvgTest1 { public static void main(String[] args) { Avg1Total student1 = new Avg1Total(); Avg1Total student2 = new Avg1Total(); String st1_avg = student1.average(70,80); String st2_avg = student2.average(80,90); int st1_total = student1.total(70,80); int st2_total = student2.total(80,90); } 객체의 메소드 호출 메시지

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

30 실습예제 6 다형성(Polymorphism) AvgTest3.java 01 02 03 04 05 06 07 08 09 10
11 12 13 14 class Avg3 { public String name; private int avg; public String average(int kor, int eng) { avg = (kor+eng)/2; return name+" 두 과목 평균 : "+avg; } public String average(int kor, int eng, int mat) avg = (kor+eng+mat)/3; return name+" 세 과목 평균 : "+avg; 같은 이름을 가진 메소드 선언 (메소드 오버로딩) 매개변수가 2개일 때 수행 같은 이름을 가진 메소드 선언 (메소드 오버로딩) 매개변수가 3개일 때 수행

31 실습예제 6 다형성(Polymorphism) AvgTest3.java 15 16 17 18 19 20 21 22 23 24
25 26 public class AvgTest3 { public static void main(String[] args) { Avg3 student1 = new Avg3(); Avg3 student2 = new Avg3(); student1.name = "김철수"; student2.name = "김영희"; String st1_avg = student1.average(70,80); String st2_avg = student2.average(80,90,100); System.out.println(st1_avg); System.out.println(st2_avg); } 다른 객체, 동일 메시지

32 학습정리 객체지향의 개요 클래스와 객체 객체지향은 실세계의 요소들을 “속성+기능”으로 표현한 것이다.
자바는 객체지향 언어를 대표하는 성공한 언어이다. 클래스와 객체 클래스는 객체를 생성하는 형판(template) 역할을 한다. 하나의 클래스로부터 다수 개의 객체가 생성된다. 클래스는 “속성+기능”으로 구성된다. 클래스로부터 객체를 생성하는 과정을 실체화(instantiation)라고 하며, 객체를 인스턴스라 부르기도 한다. 객체지향은 절차지향과는 달리 프로그램의 기본 단위가 객체(속성+기능)이다.

33 학습정리 상속 캡슐화 상속을 이용하여 비슷한 기능을 가진 클래스들을 계층구조 형태로 구성할 수 있다.
상속은 상위 클래스의 모든 속성과 기능을 상속받고, 추가로 더 가지는 확장(extend)의 개념이다. 자바에서는 하나의 클래스만을 상위 클래스로 가질 수 있다. 즉 다중상속을 허용하지 않는다. 캡슐화 캡슐화는 꼭 필요한 내용만 보여주고, 불필요한 내용을 감춘다는 개념이다. 클래스를 작성할 때는 꼭 필요한 내용만 공개해야 한다. 클래스를 작성할 때 캡슐화 개념을 적용하지 않으면, 클래스가 잘못 사용될 수 있다 캡슐화의 개념을 적용하여 정보 은폐(Information hiding)를 달성할 수 있다.

34 학습정리 메시지 다형성 생성된 객체들 사이의 상호관계를 정의한 것이 메시지이다. 메시지를 통하여 객체에 일을 시킨다.
메시지는 객체 이름, 메소드 이름, 메소드 수행에 필요한 인자(argument)를 포함한다. 다형성 다형성은 다양한 변신을 의미하는 개념이다. 다형성은 “서로 다른 객체가 동일한 메시지에 대하여 서로 다른 방법으로 응답할 수 있는 기능”을 의미한다.

35 5장. 객체지향 개념 수고하셨습니다. 질문 있습니까?


Download ppt "Java 5장. 객체지향 개념 public class SumTest {"

Similar presentations


Ads by Google