본문 바로가기
Java (국비)/Java 이론

객체지향언어 (Object Oriented Language) 특징

by Hwanii_ 2023. 5. 10.
728x90

객체지향프로그래밍의 특성

 

a) 추상화


ex) 자동차를 코딩해줘.
사람마다 생각하는게 다를 수 있다. (같은 차를 만들더라도 디테일한 포인트 요소들을 다르게 생각할 수 있다)
즉, 자동차를 코딩 해달라 했는데, OUTPUT이 전혀 다르게 나올 수 있다.


어떻게, 정의하냐에따라, 서로 다른 OUTPUT이 생성됨을 알 수 있다.


따라서 설계가 매우 매우 중요하다 !

1) 스포츠카 : 속도, 브레이크 제동력()
2) 버스 : 탑승 인원, 요금 정산()
3) 차 : 주유 상태 출력(), 벨트(), 네비게이션()

b) 캡슐화 

(모듈화, 컴포넌트화)


ex) 병원에 가서 약을 받았을 때 약들을 생각해보자.
약의 내부 구성 성분을 (정확히) 몰라도, 약의 효과를 알면 우리는 그냥 먹는다.

약사에게 약의 구성 성분을 물어보지 않는다. (어차피 물어봐도 모른다)


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

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

이 경우, 이미 완성된 코드들을 가져다가 쓰기에 다음과 같은 이점을 가지게 된다.

오류의 파급효과가 줄어든다.
개발 시간 단축
개발 비용 절감
이익 증가
유지 보수 용이

c) 상속


어떤 객체를 만들 때 필수적으로 필요한 상위 클래스를 가져다 쓰는 것을 의미 한다.


ex) 동물의숲
주민이라는 상위 클래스가 있고
그 밑에 주민의 종류는 강아지 타입, 고양이 타입, 하마 타입 등이 있다.
강아지나 고양이를 만들때 공통 부분(상위, 부모 클래스) 을 가져다 쓰는 것이다.

결론 !
부모(상위) 클래스에서 미리 공통 부분을 코딩 해놓고,
자식(하위) 클래스에서 '상속' 받아 세부적인 부분을 구현 한다 !

결국, 

오류의 파급효과가 줄어든다.
개발 시간 단축
개발 비용 절감
이익 증가
유지 보수 용이

 

※ 캡슐화 와의 차이점 

캡슐화 : 포함관계 X
상속 :     포함관계 O    // 따라서 상속은 "설계" 단계에서 집중적으로 고민 해야 하는 부분이라고 할 수 있겠다.

d) 다형성


★ "함수에게 주어(주체)가 생겨서" 발생하는 현상 이다.

★ 곱씹어보기 ★

 

함수와 메서드의 차이

함수 : 일반적인 프로그래밍 언어에서 흔히 만들 수 있다.

주어가 존재 하지 않는다.

(= 객체가 존재 하지 않는다)


메서드 : 객체지향언어 에서만 작성이 가능 하다.

주어가 존재 한다.
(우리가 기존에 사용하는 함수에 주어를 주는것이다)


함수를 실행 시키는 주어(주체) == 객체
객체가 실행하는 함수 => 메서드


결론 

다형성 : 같은 함수를 실행시켜도, 주어(주체)에 따라 다른 기능이 실행되는 현상 이다.


ex1) 

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

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

ex2)

저글링.공격(); -> 5

질럿.공격(); -> 8x2

 

글로는 이해하기 추상적이니, 코드를 보며 이해하도록 하자.

반응형

'Java (국비) > Java 이론' 카테고리의 다른 글

next() 그리고 nextLine() 의 차이  (0) 2023.05.13
Java  (0) 2023.05.11
함수 간단 정리  (0) 2023.05.09
Flag 알고리즘  (2) 2023.05.06
최대값, 최소값 알고리즘  (0) 2023.05.06