객체 (Object)
- 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것
- 물리적 : 자동차, 자전거, 책, 사람 등
- 개념적 : 학과, 강의, 주문 등 - 속성과 동작으로 구성 (각각 필드와 메소드라 부름)
- 속성 : 이름, 나이 등
- 동작 : 웃다, 걷다 등 - 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링이라고 함
객체의 상호작용
- 객체들 사이의 상호작용 수단은 메소드이고, 객체가 다른 객체의 기능을 이용할 때 메소드를 호출함
//메소드 호출 형태
메소드(매개값1, 매개값2..)
- 메소드 이름과 함께 전달하고자 하는 데이터를 괄호 안에 기술하는데, 이러한 데이터를 매개값이라 함 (메소드가 실행할 때 필요한 값)
- 리턴값은 메소드 실행의 결과이며, 호출한 곳에서 변수로 대입받아 사용
int result = add(10, 20);
객체 간의 관계
- 객체는 단독으로 존재할 수 있지만 대부분 다른 객체와 관계를 맺고 있음
- 다른 객체의 필드를 읽고 변경하거나 메소드를 호출하는 사용 관계
부모의 특징을 물려 받는 상속 관계
완성품과 부품의 관계인 집합 관계
객체 지향 프로그래밍의 특징
- 캡슐화
- 객체의 필드, 메소드를 하나로 묶고 실제 구현 내용을 외부에 감추는 것
- 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있음
- 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위해 사용
- 캡슐화된 멤버를 노출시킨 것인지 숨길 것인지 결정하기 위해 접근 제한자 사용
- 상속
- 부모 객체가 자기가 가지고 있는 필드와 메소드를 자식 객체가 사용할 수 있도록 하는 것
- 자식 객체에서 중복 코딩을 하지 않아도 되므로 코드의 재사용성을 높여줌
- 부모 객체의 필드와 메소드를 수정하면 자식 객체까지 수정되므로 유지 보수 시간 최소화
- 다형성
- 사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질
- 자동차의 부품을 교환하면 성능이 다르게 나오듯이 프로그램을 구성하는 객체를 바꾸면 프로그램 성능이 다르게 나올 수 있음
- 다형성을 구현하기 위해서는 자동 타입 변환과 재정의 기술이 필요한데, 이 기술은 상속과 인터페이스 구현을 통해 얻어짐
'JAVA > 2. 객체 지향 프로그래밍' 카테고리의 다른 글
[JAVA] 필드 (0) | 2023.11.16 |
---|---|
[JAVA] 클래스 (0) | 2023.11.16 |
[JAVA] 열거 타입 (Enum) (0) | 2023.11.16 |
[JAVA] 향상된 for문 (for each문) (0) | 2023.11.16 |
[JAVA] 배열 복사 (0) | 2023.11.16 |