코딩과 결혼합니다

[Java 문법 종합반] 3주차 : 객체지향 프로그래밍 본문

2세/Java

[Java 문법 종합반] 3주차 : 객체지향 프로그래밍

코딩러버 2023. 5. 26. 19:23
728x90

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

현실세계에서 어떠한 제품을 만들기 위해 부품들을 하나씩 조립해서 완성시키는 것 처럼 소프트웨어 또한 필요한 부품들을 만들고 하나씩 조립해서 하나의 완성된 프로그램을 만들 수 있는데 이러한 기법을 ‘객체지향 프로그래밍’이라고 부릅니다.

 

 

 

 

 

객체란?

객체는 세상에 존재하는 물체를 뜻하며 식별이 가능한 것을 의미합니다.

객체는 속성과 행위로 구성이 되었습니다. 속성과 행위 = 필드와 메서드

 

 

 

 

 

객체간의 협력

현실세계에서 사람이라는 객체와 자동차라는 객체는 서로 행위를 통해 상호작용을 하며 협력 할 수 있습니다.

- 사람이 자동차의 가속 페달을 밟으면 자동차는 이에 반응하여 속도를 올리며 앞으로 이동합니다.

- 사람이 자동차의 브레이크 페달을 밟으면 자동차는 이에 반응하여 속도를 줄이며 정지합니다.

 

사람 객체는 자동차 객체가 가지고 있는 메서드를 호출 -> 자동차 객체는 이에 반응하여 속성의 값을 넘겨줍니다.

 

또한 소프트웨어의 객체들은 메서드를 통해 데이터를 주고 받을 수 도 있습니다.

사람 객체는 메서드를 호출할 때 괄호( ) 안에 데이터를 넣어 호출할 수 있는데 이때 이 괄호안에 넣는 데이터를

‘파라미터’ 혹은 ‘매개값’ 이라고 표현합니다.

 

사람 객체는 gasPedal(50); 이렇게 메서드 괄호 안에 50의 매개값을 넣어 호출합니다.

그러면 자동차 객체는 해당하는 50의 데이터를 전달 받아 자동차 객체의 속성인 속도의 값을 50으로 만듭니다.

또한 자동차 객체는 gasPedal(50); 메서드에서 속도를 바꾸는 작업을 수행한 후 사람 객체에게 실행 결과인 속도의 값을 반환할 수 있습니다. 이때 반환되는 값을 ‘리턴값’ 이라 표현합니다.

 

 

 

 

 

객체 간의 관계

 

 

 

 

 

객체지향 프로프래밍 특징

캡슐화  속성과 메서드를 하나로 묶어 객체로 만드는 것, 내부 구현 내용은 외부에서 알 수 없게 감춘다. 접근제어자 사용(보완적 측면👍)

상속 부모 객체 - 자식 객체, 객체 간의 구조 파악 용이, 부모 객체에 있는 것만 수정 -> 자식 객체 전부 반영,

          자식 객체가 부모 객체의 필드와 메서드를 물려 받아 사용 -> 코드의 중복이 줄어들며 코드의 재사용성 증가

다형성 : 객체가 연산을 수행할 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라 여러가지 형태로 재구성 되는 것

추상화 : 객체에서 공통된 부분들을 모아 상위 개념으로 새롭게 선언하는 것 - 객체를 모델링

 

 

 

 

 

객체와 클래스

우리는 객체를 생성하기 위해서 설계도가 필요합니다. 소프트웨어에서 객체를 만들기 위해서는 설계도에 해당하는 클래스가 필요합니다.

이때 클래스를 토대로 생성된 객체해당 클래스의 '인스턴스'라고 부르며 이과정을 '인스턴스화'라고 부릅니다.

동일한 클래스로 여러개의 인스턴스를 만들 수 있습니다.