JA A V W. 04
객체지향의 개요 객체지향(Object-Oriented)이론 실세계를 구성하는 사물의 속성과 기능 컴퓨터를 통하여 실세계와 같은 환경을 흉내(simulation)내기 위해 발전한 이론 실세계를 구성하는 사물의 속성과 기능
객체지향과 절차지향
클래스와 객체 하나의 클래스로부터 여러 개의 객체를 생성하기 위해 사용하는 형판 예로들어 붕어빵을 들수 있다. 붕어빵은 붕어빵 틀에서 구워져서 나오게 된다. 붕어빵 틀에서 나오는 붕어빵은 모두 모양이 같다. 또한 하나의 붕어빵틀에서 같은 모양의 붕어빵을 무한대로 만들어 낼 수 있다. 여기서 붕어빵틀이 클래스이고 붕어빵이 객체이다., 중요한 사실은 우리가 먹을 수 있는 것은 붕어빵 즉 객체이지 붕어빵 틀 즉 클래스가 아니라는 점이다. 즉 객체지향에서 데이터를 처리하는데 사용하는 것은 클래스로부터 생성된 객체이지 클래스가 아니라는 점이다. 클래스는 붕어빵 틀처럼 객체를 생성하는 역할을 수행한다.\
클래스와 객체의 구성 일반적으로 자바 프로그램은 객체를 생성하고, 생성된 객체사이의 관계를 정의하여 프로그램을 작성한다. 자바프로그램에서 객체를 생성하기 위해서는 반드시 클래스가 필요로 하게 된다. 결론적으로 자바프로그램은 객체를 생성하기 위한 클래스를 작성하여, 그 클래스로부터 객체를 생성하고, 생성된 객체 사이의 관계를 정의하여 만들어 진다고 볼 수 있다. 다음은 성적의 평균을 구하는 클래스를 정의한 예이다. 일반적으로 객체지향에서 속성은 필드, 데이터, 속성변수, 객체변수 등 다양한 용어를 사용하고, 기능은 메소드라는 용어를 사용한다.
객체의 생성 실체화(instantiation) 클래스로부터 객체를 생성하는 과정 인스턴스(instance)라 부름 붕어빵 만드는 과정을 더 자세히 관찰해보면 붕어빵 틀에 우선 밀가루 반죽을 붓고 빵에 들어가는 팥소를 넣는다. 이떄 팥으로 만든 팥소를 넣으면 팥 붕어빵이 되고 녹두로 만든 팥소를 넣으면 녹두 붕어빵이 된다. 즉 하나의 틀에서 모양은 같지만 내부에 들어 있는 내용이 다른 붕어빵을 만들 수 있다. 마찬가지로 하나의 클래스로 부터 객체가 생성될 떄 각 개ㅔㄱ체는 같은 속성과 기능을 가지지만, 속성에 저장된 값은 모두 다르게 지정할 수 있다.
상속(Inheritance) 새로 작성되는 클래스는 기존의 평균을 구하는 클래스를 이용하여 작성될 수 있다. 즉 기존 클래스로부터 모든 속성과 메소드를 상속받고, 더 필요한 속성과 메소드를 추가하여 새로운 클래스를 생성할 수 있다. 이러한 개념이 상속이다.
상속(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; 상위 클래스 정의 상위 클래스를 상속받아 하위 클래스 정의
상속(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 객체 생성 상속받은 속성값 설정 생성된 객체에서 정의된 메소드 호출
상속(Inheritance) 클래스의 상속은 확장(extend)의 개념을 가진다. 즉 상위 클래스의 모든 것을 상속받고 추가로 더 가지는 클래스를 구성하는 것이 상속이다.
클래스 계층 구조에서의 상속 클래스들 사이의 상속은 소프트웨어 설계를 간단히 할수 있는 이점을 제공한다. 즉 기존의 클래스로부터 모든요소를 상속받고 새로운 클래스에는 추가되는 자료구조와 메소드만 지정하면 된다. 상속의 개념은 코드를 간결하고 코드의 재사용성을 높이는 요인이 된다. 하나의 클래스로부터 상속되는 것이 일반적이지만 다수개의 클래스로부터 상속받아 새로운 클래스를 생성하는 경우도 있다 이를 다중상속이라 한다 자바언어는 상속관계에서 하나의 상위클래스만 허용하며 다중상속은 허용하지 않는다.
감사합니다