프로그래밍

[자바 기초] day06 : 객체지향 프로그래밍 본문

자바/자바 기초

[자바 기초] day06 : 객체지향 프로그래밍

시케 2023. 5. 10. 16:11
728x90
반응형

2023.05.10.수

객체지향 프로그래밍(Object oriented Programming)

자바는 객체지향 언어이므로 객체지향 프로그래밍의 개념에 대해 알아보자


상태(state)행위(behave)로 이루어진 객체들간의 상호작용을 통해 프로그램을 설계, 개발하는 방식이다.

 

1. 프로그램 구현에 필요한 객체 파악

2. 각각의 객체들의 역할이 무엇인지를 정의

3. 객체들 간의 상호작용

 

객체

// 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른것과 식별 가능한 것을 말한다.

객체는 상태와 행위로 이루어져 있다

ex) 자동차, 강아지

함수를 실행시키는 주어(주체) == 객체

메서드

객체가 실행하는 함수가 바로 메서드이다

함수는 일반적인 프로그래밍 언어에서 모두 작성 가능하지만
메서드는 실행 주체가 있는 객체지향에서만 작성가능하다

 

실행 주체란?

System.out.println();의 out
rand.nextInt();의 rand 에 해당하는 부분이다

함수 혹은 메서드를 실행시키는 주체이다

 

객체 지향 언어의 특징

  • 추상화
  • 캡슐화
  • 상속
  • 다향성

 

1. 추상화

객체들의 공통적인 특징(기능, 속성)을 추출해서 정의하는 것을 말한다

객체를 정의할때 어떻게 추상화 하는지에 따라 매우 다른 결과가 나올 수 있다

그러므로 설계가 매우 중요해진다

ex) 자동차
1) 스포츠카: 속도
2) 버스: 탑승인원, 요금정산
3) 승용차: 주유, 벨트 착용, 네비

 

2. 캡슐화

관련이 있는 변수와 함수를 하나의 클래스로 묶고, 외부에서 쉽게 접근할 수 없도록 은닉하는 것이다

알약의 내부 구성 성분을 몰라도 효과를 알면 먹는 것처럼

내부 로직 코드를 정확히 몰라도 INPUT, OUTPUT, 기능을 알고 활용할 상황이면 그대로 사용할 수 있다

기존의 코드를 분석하여 '모듈화'된 코드를 가져다가 쓸 수 있으며 오류의 파급효과가 줄어든다

 

3. 상속

부모 코드(상위 코드)에서 미리 공통부분 코딩한 후
자식 코드(하위 코드)가 상속받아 세부적 부분을 구현하는 방식이다

 

기존의 코드들을 분석하여 '모듈화'된 코드들을 가져다가 쓸수있다

오류의 파급효과 줄어들고 개발시간의 단축과 비용 절감의 효과가 있어 유지보수 또한 용이해진다

 

이와 같은 측면에서 반복문, 함수, 캡슐화와 비슷하지만

캡슐화는 포함 관계가 아니지만 상속은 포함 관계라는 차이점이 있다.
따라서 설계 단계가 중요하다

 

4. 다양성

다양성은 "함수에게 (주체) 주어가 생겨서" 발생하는 문제이다

같은 함수 실행 시켜도 주체에 따라 다른 기능을 실행한다

 

ex) 강아지.울음소리(); ->'멍멍'
      고양이.울음소리(); ->'야옹'

 

위에서 계속 언급된 것과 같이

'객체지향' 방식으로 바꿔면 질문이 매우 달라지고 
구조적(설계) 부분을 많이 공부해야한다

 

절차 지향 방식
Q) 이거 짝수야?
Q) 3,6,9 게임의 알고리즘을 작성해줘.
Q) 배열에 NUM가 있어?

VS

객체 지향 방식
Q) 자동차 코딩해줘.
Q) 학생부 프로그램을 제작하고싶어. 학생 데이터 만들어줘.
Q) 스마트폰 코딩해줘.

 

728x90
반응형
Comments