솜은 코튼

[Java] 객체지향 프로그래밍 본문

Android/Java

[Java] 객체지향 프로그래밍

솜.코 2020. 7. 18. 01:40

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

    : 컴퓨터 프로그래밍 패러다임 중 하나,

      자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음 이들의 실행 순서와 흐름을 짜는 방식

 

절차지향과의 차이는?

    이름만으로 알 수 있듯 절차대로 진행되는 실행방식이다.

    그럼 객체지향은 절차대로 실행되지 않나?

 

    정답은 NO! 위에서 정의했듯이 객체지향 또한 절차대로 진행된다.

 

다만, 위의 그림에서 보면 알 수 있듯이 절차지향은 프로그램 순서와 흐름이 중점이 되고, 객체지향은 객체가 중점이 된다. 즉, 절차지향 프로그래밍은 프로그램의 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수들을 설계하는 방식이라면, 객체지향 프로그래밍은 자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음에 이들의 실행 순서와 흐름을 짜는 방식인 것이다.

 

객체지향 프로그래밍을 했을 때 장점은?

    재사용 가능! 클래스를 공유하여 확장 사용할 수 있다.

    유지보수 쉬움! 해당 클래스만 수정하면 된다.

 

객체지향 프로그래밍의 특징은?

    : 추상화 / 캡슐화 / 상속구조 / 다형성

 

    '추상화=이름표'

    기능의 목적에 맞는 이름을 붙혀줌. '포도','사과','딸기'가 담겨있는 클래스는 '과일'이라는 이름을 붙힐 수 있다.

 

    '캡슐화=메타(대체) 연결'

    1- 내 손에 물이 있는 컵이 있다.

    2- 컵 안에 에스프레소 한 샷을 넣었다.

    3- 아메리카노가 되었다.

    현재 내 컵엔 아메리카노가 되어버린 물이 있다.

    이 물이 어떻게 아메리카노가 되었는지 2번의 과정을 보지 못하면 알 수 없다.

    즉, 2번 과정의 소스를 보지 않으면 '아메리카노'란 결과가 어떻게 나왔는지 알 수 없다는 말이 된다.

    예시와 같이 과정의 일부를 외부에 감추어 은닉할 수 있다.

 

    '상속구조=서로 연결된 상태'

    00초등학교의 1-1반과 1-2반의 교장선생님 성함은 '김철수'이다.

    1-1반과 1-2반은 서로 다르지만 두 반의 교장선생님은 같은 분이다.

 

    '다형성=맥락에 맞는 결과값'

    체육시간에 1-1반 아이들을 운동장에 집합시켜야 한다.

    '2층으로 올라가서 화장실 앞에 있는 문을 열고 들어가 안에 있는 아이들에게 운동장으로 나오라고 말한다.'

    위의 자세한 설명 대신

    '1-1반에 있는 아이들에게 운동장으로 나오라고 말한다.'와 같이 대략적으로 명령을 내릴 수 있다.