Language/JAVA

객체지향 프로그램(OOP)의 특성

오류나면꽥꽥 2023. 5. 26. 10:00

"객체지향"으로 넘어오면 "질문"이 바뀐다

 

이거 짝수야

3,6,9게임의 알고리즘 작성해줘

배열에 NUM가 있어?

▼▼

자동차 코딩해줘

학생부 프로그램을 제작하고 싶어 학생 데이터 만들어줘

스마트폰 코딩해줘

 


객체지향 프로그램(OOP)의 특성

4가지 특성

추상화 캡슐화 상속 다형성

 

✅ 1. 추상(설계가 중요)

abstract class

ex) "자동차" 코딩해줘

스포츠카: 속도,브레이크()

버스: 탑승인원, 요금정산()

차: 주유상태출력,벨트,네비게이션()

> 어떻게 정의하냐에 따라 서로 다른 OUTPUT이 생성, 그래서 설계가 중요!

 

 

 

✅ 2. 캡슐화(모듈화,컴포넌트화)

내부 구성성분을 몰라도, 효과를 알면 우리는 그냥 먹는다.

내부 로직코드를 정확히 몰라도 INPUT, OUTPUT 기능 활용하는 상황 등을 알면 그냥 쓴다.

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

*오류 파급 줄어듬 / 개발시간 단축 / 개발비용 절감 / 이익 증가 / 유지보수 용의

 

 

 

✅ 3. 상속(설계단계에서 고민)

extands

부모(상위) 클래스에서 미리 공통 부분을 코딩해둔 다음,

자식(하위) 클래스에서 상속받아 세부적인 부분을 구현한다.

*오류 파급 줄어듬 / 개발시간 단축 / 개발비용 절감 / 이익 증가 / 유지보수 용의

캡슐화와의 차이점

- 캡슐화: 포함관계 X

- 상속: 포함관계 O >> 설계단계에서 집중적으로 고민하는 부분

 

 

 

✅ 4. 다형성(주어)

*** 함수에게 주어(주체)가 생겼기" 때문에 발생하는 현상 ***

@오버라이딩

함수: 일반적인 프로그래밍언어에서 흔히 만들 수 있음 > 주어 X

메서드: 객체지향언어에서만 작성가능 > 주어 O

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

객체가 실행하는 함수 == 메서드

> 같은 함수를 실행시켜도, 주어에 따라 다른 기능이 실행되는 현상

강아지.울음소리(); > 멍멍

고양이.울음소리(); > 야옹

우리정글.공격(); > 100

상대정글.공격(); > 200