profile image

L o a d i n g . . .

객체 지향프로그래밍?

OOP(Object-Oriented Programming). 개발 시 부품에 해당하는 객체를 만들고 객체를 조립하여 하나의 완성된 프로그램을 만드는 기법

 

 

객체 : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중 자신의 속성을 가지고있으며, 식별 가능한 것

속성 : 필드

동작 : 메소드

객체모델링 : 현실 세계의 객체를 소프트웨어 객체로 설계하는것을 객체모델링이라 한다

 

 

자동차 객체로 예시를 들면

색깔,속도는 필드

달린다, 멈춘다는 메소드

 

기계와 자동차는 상속관계 (자동차는 기계에 상속되어있음. 부모-자식)
사람과 자동차는 사용관계 (사람은 자동차를 사용함. 객체간의 상호작용)

부품과 자동차는 집합관계 (엔진, 타이어,  핸들 객체가 집합하여 자동차 객체를 만듦. 부품-완성품)

 

 

 

 

클래스 ?

자바 설계도

객체를 생성하기위한 필드와 메소드가 정의되어있다

public class Car{
}

 

클래스 변수 선언과 new연산자를 사용해 클래스로부터 객체를 생성함. 

생성자는 클래스()형태를 가지고 있으며, new연산자로 생성된 객체는 heap영역에 객체번지가 생성된다.

클래스 변수 = new 클래스();  //클래스의 객체를 생성 후, 객체의 주소를 변수에 저장

클래스 변수;
참조변수 = new 클래스(); //이렇게도 사용가능 ↑위에는 한줄로 줄인것

 

 

 

 

 

 


예제

Student 클래스와 StudentEx 클래스를 생성하고 StudentEx 클래스의 main()메소드에서 Student 객체를 생성

 

 

package a220701;

public class StudentEx {
	public static void main(String[] args) {
		Student s1 = new Student();
		System.out.println("s1 변수가 Student 객체를 참조합니다");
		
		Student s2 = new Student();
		System.out.println("s2 변수가 또 다른 Student 객체를 참조합니다");
		
		System.out.println(s1 == s2);
	}
}

 

 

 

클래스를 왜 두 개 만들었을까?

클래스는 두 가짖 용도가 있다. 하나는 라이브러리(API; Application Program Interfface)용이고 다른 하나는 실행용이다. 

라이브러리 클래스는 다른 클래스에서 이용할  목적으로 설계되며 프로그램 전체 사용되는 클래스가 100개라면 99개는 라이브러리 클래스이고 단 하나가 실행클래스이다. 실행클래스는 프로그램의 실행 진입점인 main()메소드를 제공하는 역할을 한다

 

위 예제에서 Student는 라이브러리 클래스, StudentEx는 실행 클래스다.

짧은 예제에서는 Student클래스에 main()메소드를 작성해서 라이브러리인 동시에 실행클래스로 만들 수도 있다. 

그러나 대부분의 객체 지향 프로그램은 라이브러리(부품 객체 및 완성 객체)와 실행클래스가 분리되어있다.

 

 

 

 

 


클래스 구성멤버

public class ClassName {

	//필드
    int fieldname;
    
    //생성자
    ClassName(){...};
    
    //메소드
    void methodName() {...}
}

필드(Field) : 객체의 고유 데이터, 부품 객체, 상태 정보 저장. 선언형태는 변수와 비슷하나 필드와 변수는 다르다. 변수는 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행종료되면 자동 소멸된다. 하지만 필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다.

 

생성자(Constructor) : 객체 생성 시 초기화 역할 담당. new 연ㄴ산자로 호출되는 특별한 중괄호{}블록. 생성자는 메소드와 비슷하게 생겼으나, 클래스 이름으로 되어있고 리턴 타입이 없다.

 

 

메소드(Method) : 객체의 동작에 해당하는 중괄호{} 실행 블록. 메소드를 호출하게되면 블록안 모든 코드들이 일괄적으로 실행된다. 메소드는 객체간의 데이터를 전달하는 수단으로 외부(호출한곳)로부터 매개값을 받아 실행에 이용하고,  실행 후 결과 값을 외부(호출한곳)로 리턴할 수도 있다.

 

 

 


핵심포인트

클래스: 객체를 만들기 위한 설계도

 

객체: 클래스로부터 생성되며 'new 클래스()'로 생성

 

new 연산자: 객체생성연산자. 생성자를 호출하고 객체 생성 번지를 리턴

 

클래스 변수: 클래스로 선언한 변수를 말하며 해당 클래스의 객체 번지가 저장

 

인스턴스: 객체는 클래스의 인스턴스. 클래스로부터 만들어진 객체

 

클래스의 인스턴스화: 클래스로부터 객체를 만드는 과정

 

클래스 멤버: 클래스에 선언되는 멤버는 필드, 생성자, 메소드

 

속성(property) : 멤버변수, 필드, 특성, 상태 
기능(function) : 메서드, 함수, 행위

 

 

 

 

 

참고 :

- 혼자 공부하는 자바(신용권), 한빛미디어

반응형
복사했습니다!