자바 기초 (05). 객체 지향 프로그래밍 in Java
머리자르기 전에 올리는 포스팅,,,,,,,,,
0. 들어가기전에Permalink
드디어 객체지향이다. 이번시간에는 객체지향 프로그래밍이 어떠한 것인지, 알아 보도록 하겠다. 객체의 개념, 객체의 상호작용에 대해 집중하여 알아 본다. 나도 사실 실무에서의 객체지향 프로그래밍에 익숙하지못하다. 그래서 다시 공부한다는 느낌으로 글을 적어보려 한다.
이번장에선 아래 주제들로 객체를 공부하고자 한다.
- 객체의 상호작용
- 객체 간의 관계
- 객체와 클래스
- 클래스 선언
- 객체 생성과 클래스 변수
- 클래스의 구성 멤버
1. 객체 (Object)Permalink
객체는 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중, 자신의 속성을 가지며 식별 가능한 것을 의미한다. 일반적으로 객체는 속성과 동작을 가지고 있다. 속성( 필드(Field))는 보통 Data를 가르키고, 동작( 메서드(method)) 는 그 클래스의 function을 의미한다.
ex) 자동차 : (속성)
- 모델명
- 색깔
(동작)
- 달린다
- 멈춘다
자바를 객체지향 프로그래밍 언어라고 하는 이유는 위와 같은 현실 세계의 객체를 소프트웨어로 만들수 있도록 지원하기 때문이다.
2. 객체와 객체간의 상호작용Permalink
상호작용이란, A객체에서 B객체를 이용하는것을 의미한다. 주로 메소드를 통하여 객체들과 상호작용을 한다. 메소드 호출는 객체 가 다른 객체의 기능을 이용하는것 이며, A가 B객체를 이용할때 A가 B를 호출한다고 말한다.
// 아래 코드가 A 클래스에 있다고 가정한다면, 10,20이라는 매개변수(값)을 넘겨주며 , B클래스의 methodFunction을 호출한 것이다.
int result = B.methodFunction(10,20);
위 호출이 끝나고 result에 들어가는 값을 return값이라고 한다.
3. 객체 간의 관계 3가지Permalink
- 집합관계 : 부품과 완성품의 관계
- 사용관계 : 객체 간의 상호작용
- 상속관계 : 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성
집합관계Permalink
위 관계를 자동차로 설명해 보겠다. 자동차는 자동차 자체의 완성품과 부품들 엔진, 타이어, 핸들 각각의 부품들로 이루어 진다고 할 수 있다.
이러한 부품들과 완성품의 관계를 집합 관계라고 말한다.
사용관계Permalink
사용관계는 객체간의 메소드를 호출하여 이용하는 관계를 뜻한다.
위처럼 만들어진 자동차는 사람에 의해 사용이 된다. 즉 자동차객체는 사람에 의해 사용되어 자동차 메소드를 사용한다.
상속관계Permalink
자동차객체의 부모는 무엇이 있을까? 기계 또는 운송수단을 생각하면 될것 같다.
위의 관계를 잘 이용하여 프로그래밍 하는 기법을 객체지향 프로그래밍이라고 한다.
4. 객체와 클래스(Class)Permalink
- 클래스 는 자바의 설계도라고 한다. 인스턴스 는 위 설계도를 통해 만들어진 결과물(객체)이다.
- 객체 지향 프로그래밍 단계 클래스 설계 -> 설계된 클래스로 사용할 객체 생성 -> 객체 이용
5. 클래스로부터 객체를 생성하는 방법Permalink
- new 클래스();
- new 연산자로 메모리 힙 영역에 객체 생성
- 객체 생성 후 객체 번지가 리턴 클래스 변수에 저장하여 변수를 통해 객체를 사용 가능하다.
6. 클래스의 용도Permalink
-
라이브러리(API : Application Program Interface) 클래스 객체 생성 및 메소드 제공 역할 Porsche.java, Audi.java
-
실행 클래스 main() 메소드 제공 역할 - MyCar.java
public class Porsche{
}
public class Audi{
}
public class MyCar{
public static void main(String [] args){
Porsche myCar1 = new Porsche();
Porsche myCar2 = new Porsche();
Audi myCar3 = new Audi();
}
}
위의 예제라면 Porsche, Audi 클래스는 객체 생성 및 메소드를 제공하는 라이브러리 클래스__일태고 MyCar 클래스는 main() 메소드를 제공하는 __실행 클래스 일것이다.
7. 클래스 멤버Permalink
public class ClassMember{
int fieldName //필드(Field) : 객체의 데이터가 저장되는곳
ClassMember(){....} //생성자(Constructor) : 객체 생성 시 초기화 역할 담당
void methodName(){} // 메소드(Method) : 객체의 동작에 해당하는 실행 블록
}