실체 : 개미 객체의 속성 : 이름은 개미, 까맣고 매우 작다, 다리는 여섯개 등 객체의 동작 : 먹이를 먹는다. 부지런이 돌아다닌다. 등
※ 모든 객체는 필드(속성)와 메소드(동작)로 구성된 자바 객체로 모델링 가능하다!
※ 객체들을 서로 간에 기능(동작)을 이용하고 데이터를 주고 받는다!! 기브앤 테이크!!interaction!!
◆ 객체가 되기 위해서는?
- 상태(status) : 객체를 설명하는 특성, 속성을 의미
- 잘 정의된 행위(well-defined behavior) : 객체가 할 수 있는 일을 의미(기능적인 측면)
- 유일한 식별자(unique identity) : 다른 객체와 구분할 수 있게 하는 자신만의 고유한 구분인자를 의미
◆ 객체 간의 관계
- 객체 지향 프로그램에서는 객체는 다른 객체와 관계를 맺음
※ 관계의 종류
1. 집합 관계 : 완성품 - 부품(is has 관계)의 관계 ( ex.자동차 - 엔진, 타이어, 핸들)
2. 사용관계 : 객체가 다른 객체를 사용하는 관계 ( ex. 사람 - 자동차 )
3. 상속 관계 : 종류 객체(is A 관계)와 구체적인 사물 객체 관계 ( ex. 기계 - 자동차)
◆ 클래스(Class)란?
- 객체를 만들어내기 위한 설계도 혹은 틀
- 클래스에는 객체를 생성하기 위한 필드와 메소드가 정의
- 하나의 클래스로부터 여러 개의 인스턴스를 만들 수 있다!!
※ 클래스로부터 만들고자 하는 것, 만들어진 것이 객체(결과)이며,
클래스로부터 만들어진 객체는 인스턴스(과정)라고한다.
<참고> Object / Instance 비교
- Object(객체) : 소프트 세계에 구현할 대상/ 객체는 모든 인스턴스를 대표하는 포괄적인 의미 - Instance(인스턴스) : 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
클래스 타입으로 선언되었을 때 객체라고 부르고, 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다. 객체는 현실세계에 가깝고, 인스턴스는 소프트웨어 세계에 가깝다. 객체는 '실체', '인스턴스는 '관계'에 초점을 맞춘다.
<참고> 클래스 선언과 컴파일
- 소스 파일 생성: 클래스이름.java - 소스 작성 -> 컴파일(javac) -> 클래스 이름.class(바이트 코드 파일) - 소스 파일당 하나의 클래스를 선언하는 것이 관례 여러 개의 클래스를 선언하는 경우 선언한 개수만큼 바이트코드 파일이 생성 (단, 소스 파일 이름과 동일한 클래스만 public으로 선언 가능/ public은 최대 하나만 선언 가능)