Helmi

객체 지향 프로그래밍이란? 본문

JAVA/이것이 자바다

객체 지향 프로그래밍이란?

Helmi 2023. 4. 20. 12:29

현실 세계서 제품 만들 때 부품 먼저 만들고, 하나씩 조립해 완성품 만듬

소프트 웨어 개발시에도 동일 - 객체들 먼저 만들고 객체들 하나씩 조립해 완성된  프로그램 만드는 기법객체 지향 프로그래밍(OOP, Object Oritented Programming)

 

객체란?

객체 : 데이터 + 메소드로 구성된 덩어리

현실 객체 : 물리적으로 존재하거나 개념적인 것 중 다른 것과 식별 가능한 것

ex) 자동차, 자전거, 핸드폰, 사람, 학과(개념적 객체), 강의, 주문 등

객체와 객체간에 식별 가능함.

 

객체는 속성(데이터)와 동작(메소드)로 구성 됨.

ex) 사람은 이름, 나이 등 속성, 웃다, 것다 등 동작 있음

 

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

현실 세계 객체의 대표 속성과 동작을 추려내 소프트웨어 객체의 필드(속성)와 메소드로 정의하는 과정

 

객체의 상호작용

현실 세계에서 일어나는 모든 현상은 객체와 객체간의 상호작용으로 이루어 짐.

ex) 사람은 전자 계산기 기능 이용, 전자계산기는 계산 결과 사람에게 리턴

 

객체 지향 프로그램에서도 객체들은 다른 객체와 서로 상호작용하며 동작

객체들 사이 상호작용 수단은 메소드. 객체가 다른 객체 기능 이용 시 메소드 호출

 

메소드 호출 형태

메소드(매개 값1, 매개 값2, .....);

매개 값 : 사람이 데이터 주고 일 시킴. 전자계산기가 실행하기 위해 데이터 받는데 이게 매개 값. 메소드가 실행될 때 필요한 값. 

 

리턴 값 : 메소드 실행의 결과, 호출한 곳으로 돌려주는 값

 

메소드의 리턴값은 호출한 곳에서 변수로 대입받아 사용

int result = add(10, 20);
//리턴한 값을 int 변수에 저장함.

 

객체 간의 관계

객체는 단독으로 존재 가능하나 대부분 다른 객체와 관계 맺음. 관계 종류에는 집합, 사용, 상속 관계 있음

 

집합 관계

완성품과 부품의 관계.

ex) 자동차는 엔진, 타이어, 핸들 등으로 구성. 자동차와 부품들은 집합 관계

 

사용 관계

다른 객체의 필드 읽고 변경하거나 메소드 호출하는 관계. 

 

상속 관계

부모와 자식 관계.

ex) 자동차가 기계의 특징(필드, 메소드) 물려 받으면 기계(부모)와 자동차(자식)는 상속 관계에 있다고 볼 수 있음

 

객체 지향 프로그래밍 특징

캡슐화, 상속, 다형성

 

캡슐화

객체의 데이터(필드), 동작(메소드)을 하나로 묶고 실제 구현 내용을 외부에 감추는 것. 

외부 객체는 내부의 구조 알지 못하며 객체 노출해서 제공하는 필드와 메소드만 이용 가능

필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체 손상되지 않도록 함.

자바 언어는 캡슐화된 멤버 노출시킬 것인지 숨길 것인지 결정 위해 접근 제한자 사용

 

상속

부모 역할의 상위 객체와 자식 역할의 하위 객체가 있음.

부모 객체는 자기가 가지고 있는 필드와 메소드를 자식 객체에게 물려줘 자식 객체가 사용할 수 있도록 함

여러 자식 객체 만들 수 있음 (하나의 부모로)

- 유지 보수 시간 최소화 시켜줌 : 부모 변경 → 자식도 변경 됨

 

다형성 

사용 방법은 동일하나 실행 결과 다양히 나오는 성질

자동차 부품 교환하면 성능 다르게 나오듯 프로그램을 구성하는 객체(부품) 바꾸면 프로그램의 실행 성능 다르게 나올 수 있음

다형성 구현 위해 자동 타입 변환재정의(override) 기술 필요 - 이 기술들은 상속과 인터페이스 구현 통해 얻어짐.

'JAVA > 이것이 자바다' 카테고리의 다른 글

객체 생성과 클래스 변수  (0) 2023.04.21
객체와 클래스, 클래스 선언  (0) 2023.04.20
환경 변수 설정  (0) 2023.04.17
JDK란?  (0) 2023.04.17
자바의 특징  (1) 2023.04.17