Backend/Java
Java 문법 3-1. 객체지향 프로그래밍 이해
chillmyh
2023. 11. 23. 19:29
3-1.객체지향 프로그래밍 이해
객체 (Object)
- 의사나 행위가 미치는 대상 ( 사전적 의미 )
- 구체적, 추상적 데이터의 단위 ( 학생, 회원, 생산, 주문, 배송 )
- 세상에 존재하는 물체, 식별이 가능한 것
객체는 속성과 행위로 구성되어있다.
ex ) 자동차의 속성과 행위를 표현해 보겠습니다.
- 자동차는 회사, 모델, 색상, 가격, 속도 등의 속성을 가질 수 있습니다.
- 자동차는 가속, 브레이크, 기어변속, 조명, 경적등의 행위를 가질 수 있습니다.
- Java 에서는 이러한 속성과 행위를 필드와 메서드로 정의하여 구현할 수 있습니다.
객채 간의 관계
- 사용 관계 : 사람 객체는 자동차 객체를 사용.
- 포함 관계 : 타이어 객체, 차문 객체, 핸들 객체는 자동차 객체에 포함
- 상속 관계 :
- 공장에 자동차만 생산하는게 아니라 기차도 생산한다고 가정
- 자동차와 기차 객체는 하나의 공통된 기계시스템 객체를 토대로 만들어진다고 가정
- 자동차 객체와 기차 객체는 기계시스템 객체를 상속 받는 상속 관계
객체 지향 프로그램과 절차 지향 프로그래밍
- 절차 지향 프로그래밍
- 일어난다 -> 씻는다 -> 밥을 먹는다 -> 버스를 탄다-> 요금을 지불한다 -> 학교에 도착
- 시간이나 사건의 흐름에 따른 프로그래밍
- 객체 지향 프로그래밍
- 캡슐화 : 속성(필드)와 행위(메서드)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에서 알 수 없게 감추는 것 (캡슐)
외부 객체에서 캡슐화 된 객체의 내부 구조를 알 수 없음 -> 보안성
java에서는 노출을 정하기 위해 접근 제어자(public 등)를 사용
클래스(class)라는 캡슐을 사용하며, 필드(멤버 변수, member variable)와 메소드(멤버 함수, member function)로 구성 - 상속 : 부모 클래스의 속성을 물려받고 기능을 추가하여 확장(extends)하는 개념
부모 객체가 가지고 있는 필드와 메서드 -> 자식 객체 사용 가능
부모 객체 값을 수정하면 자식 객체 전부에 동시 반영! -> 일관성, 재사용성, 가독성
자바에서 부모 클래스를 슈퍼클래스(super class), 자식 클래스를 서브 클래스(sub class)라고 부른다. - 다형성 :
객체가 연산을 수행할 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라 다른 여러가지 형태로 재구성되는 것을 의미
- 추상화 : 객체에서 공통된 부분들을 모아 상위 개념으로 새롭게 선언
객체 지향 프로그램은 어떻게 구현하는가?
- 객체를 정의 하고
- 각 객체 제공하는 기능들을 구현하고
- 각 객체가 제공하는 기능들 간의 소통(메세지 전달)을 통하여 객체간의 협력을 구현