370 likes | 780 Views
5 장 . 객체지향 개념. Java. 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 + " 입니다 "); } }.
E N D
5장. 객체지향 개념 Java 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 + "입니다"); } }
목차 • section 1 객체지향의 개요 • 1-1 객체지향 이론과 역사 • 1-2 객체지향과 절치지향 • 1-3 객체지향의 장점 • section 2 클래스와 객체 • 2-1 클래스와 객체의 구성 • 2-2 객체의 생성 • section 3 상속(Inheritance) • section 4 캡슐화 (Encapsulation) • section 5 메시지(Message) • section 6 다형성(Polymorphism)
1 객체지향의 개요 1-1 객체지향 이론과 역사 • 객체지향(Object-Oriented)이론 • 컴퓨터를 통하여 실세계와 같은 환경을 흉내(simulation)내기 위해 발전한 이론 • 실세계를 구성하는 사물의 속성과 기능 165 page
1 객체지향의 개요 1-1 객체지향 이론과 역사 • 객체지향 언어의 역사 166 page
1 객체지향의 개요 1-2 객체지향과 절치지향 • 절차지향 언어 • 프로그램의 기본 단위는 절차(procedure) 또는 함수(fuction)로 정의 • 객체지향 언어 • 프로그램의 기본단위가 객체 • 객체는 “속성+기능”으로 구성
1 객체지향의 개요 1-2 객체지향과 절차지향 • 절차지향과 객체지향 167 page
1 객체지향의 개요 1-3 객체지향의 장점 • 객체지향의 장점 • 문제를 쉽고 자연스럽게 프로그램화(모델링) 할 수 있다. • 쉬운 프로그램의 개발로 인한 생산성을 향상시킬 수 있다. • 프로그램 모듈을 재사용할 수 있다.
2 클래스와 객체 • 클래스 • 하나의 클래스로부터 여러 개의 객체를 생성하기 위해 사용하는 형판 169 page
2 클래스와 객체 2-1 클래스와 객체의 구성 • 객체 • “속성+기능”으로 구성 • 객체를 생성하는 클래스 역시 “속성+기능”으로 구성
2 클래스와 객체 2-1 클래스와 객체의 구성 • 실습예제 • 다음은 성적의 평균을 구하는 클래스를 정의한 예이다. 일반적으로 객체지향에서 속성은 필드, 데이터, 속성변수, 객체 변수 등 다양한 용어를 사용하고, 기능은 메소드(method)라는 용어를 사용한다. 170 page
2 클래스와 객체 2-1 클래스와 객체의 구성 • 실습예제 속성 기능
2 클래스와 객체 2-2 객체의 생성 • 실체화(instantiation) • 클래스로부터 객체를 생성하는 과정 • 인스턴스(instance)라 부름 • 실습예제 • 위에서 작성된 평균을 구하는 클래스로부터 객체를 생성하는 예를 살펴보자. • 평균을 구하는 클래스로부터 객체를 생성 171 page
2 클래스와 객체 2-1 클래스와 객체의 구성 • 실습예제 생성된 객체의 속성에 서로 다른 값을 저장 student1 객체 생성 student2 객체 생성
2 클래스와 객체 2-1 클래스와 객체의 구성 • 프로그램 설명 • 03 : student1 객체를 생성한다. • 04 : student2 객체를 생성한다. • 05~06 : 생성된 student1과 student2 객체의 각 속성에 서로 다른 값을 저장한다.
3 상속(Inheritance) • 상속 • 기존 클래스로부터 모든 속성과 메소드를 상속 • 더 필요한 속성과 메소드를 추가하여 새로운 클래스를 생성
3 상속(Inheritance) • 실습예제 • 앞 절에서 사용한 평균을 구하는 클래스에 총점을 구하는 방법이 추가된 클래스를 상속을 이용하여 작성해보자. 173 page
3 상속(Inheritance) • 실습예제 상위 클래스 정의 상위 클래스를 상속받아 하위 클래스 정의
3 상속(Inheritance) • 실습예제 Avg1Total 객체 생성 상속받은 속성값 설정 생성된 객체에서 정의된 메소드 호출
3 상속(Inheritance) • 프로그램 설명 • 1~0 : Avg1 클래스를 정의한다. • 10~16 : Avg1 클래스를 상속받아 Avg1Total 클래스를 정의한다. • 11-15 : Avg1Total 클래스에 total 메소드를 추가한다. • 19~20 : Avg1 클래스를 상속받은 Avg1Total 클래스로부터 객체를 생성한다. • 21~22 : Avg1으로부터 상속받은 name 속성의 값을 설정한다. • 25~26 : Avg1Total 클래스에서 새로 정의한 total 메소드를 호출한다.
3 상속(Inheritance) • 클래스의 상속은 확장(extend)의 개념을 가짐 • 상위 클래스의 모든 것을 상속받고 추가로 더 가지는 클래스를 구성하는 것 • 클래스의 계층 구조 175 page
3 상속(Inheritance) • 클래스 계층 구조에서의 상속 176 page
4 캡슐화(Encapsulation) • 캡슐화 • 감기에 걸렸을 때 먹는 캡슐약과 같은 개념 • 캡슐 약에는 많은 성분이 포함되어 있지만, 단순히 감기를 낫게 해 준다고 생각 177 page
4 캡슐화(Encapsulation) • 캡슐화를 통한 ‘정보의 은폐(information hiding)’의 장점 • 객체에 포함된 정보의 손상과 오용을 막을 수 있다. • 객체 내부의 조작 방법이 바뀌어도 사용방법은 바뀌지 않는다. • 데이터가 바뀌어도 다른 객체에 영향을 주지 않아 독립성이 유지된다. • 처리된 결과만 사용하므로 객체의 이식성이 좋다. • 객체를 부품화 할 수 있어 새로운 시스템의 구성에 부품처럼 사용할 수 있다. 178 page
4 캡슐화(Encapsulation) • 실습예제 공개되는 속성 공개되지 않는 속성 공개된 속성에 접근. 오류 발생하지 않음 공개되지 않은 속성에 접근. 오류 발생
5 메시지(Message) • 메시지 • 객체에 일을 시키는 행위 • 객체 사이의 메시지 전달 179 page
5 메시지(Message) • 상속된 구조에서의 메소드 탐색 180 page
5 메시지(Message) • 실습예제 객체의 메소드 호출 메시지
6 다형성(Polymorphism) • 다형성(Polymorphism) • 객체지향의 중요한 개념 중에 하나 • 서로 다른 객체가 동일한 메시지에 대하여 서로 다른 방법으로 응답할 수 있는 기능
6 다형성(Polymorphism) • 실습예제 같은 이름을 가진 메소드 선언 (메소드 오버로딩) 매개변수가 2개일 때 수행 같은 이름을 가진 메소드 선언 (메소드 오버로딩) 매개변수가 3개일 때 수행
6 다형성(Polymorphism) • 실습예제 다른 객체, 동일 메시지
학습정리 • 객체지향의 개요 • 객체지향은 실세계의 요소들을 “속성+기능”으로 표현한 것이다. • 자바는 객체지향 언어를 대표하는 성공한 언어이다. • 클래스와 객체 • 클래스는 객체를 생성하는 형판(template) 역할을 한다. • 하나의 클래스로부터 다수 개의 객체가 생성된다. • 클래스는 “속성+기능”으로 구성된다. • 클래스로부터 객체를 생성하는 과정을 실체화(instantiation)라고 하며, 객체를 인스턴스라 부르기도 한다. • 객체지향은 절차지향과는 달리 프로그램의 기본 단위가 객체(속성+기능)이다.
학습정리 • 상속 • 상속을 이용하여 비슷한 기능을 가진 클래스들을 계층구조 형태로 구성할 수 있다. • 상속은 상위 클래스의 모든 속성과 기능을 상속받고, 추가로 더 가지는 확장(extend)의 개념이다. • 자바에서는 하나의 클래스만을 상위 클래스로 가질 수 있다. 즉 다중상속을 허용하지 않는다. • 캡슐화 • 캡슐화는 꼭 필요한 내용만 보여주고, 불필요한 내용을 감춘다는 개념이다. • 클래스를 작성할 때는 꼭 필요한 내용만 공개해야 한다. • 클래스를 작성할 때 캡슐화 개념을 적용하지 않으면, 클래스가 잘못 사용될 수 있다 • 캡슐화의 개념을 적용하여 정보 은폐(Information hiding)를 달성할 수 있다.
학습정리 • 메시지 • 생성된 객체들 사이의 상호관계를 정의한 것이 메시지이다. • 메시지를 통하여 객체에 일을 시킨다. • 메시지는 객체 이름, 메소드 이름, 메소드 수행에 필요한 인자(argument)를 포함한다. • 다형성 • 다형성은 다양한 변신을 의미하는 개념이다. • 다형성은 “서로 다른 객체가 동일한 메시지에 대하여 서로 다른 방법으로 응답할 수 있는 기능”을 의미한다.
5장. 객체지향 개념 수고하셨습니다. 질문 있습니까?