밤에 쓴 코드

OOP ) 클래스 / 인스턴스 / 객체 본문

OOP

OOP ) 클래스 / 인스턴스 / 객체

붱이🦉 2019. 4. 2. 01:04

OOP - 객체지향 프로그래밍

중요하다. 근데 왜쓰는가 ? 왜 중요한가?

, 반론이나 의문을 가져본 적이 있는지 싶다.

 

OOP

  • 객체를 이용하여 프로그래밍을 한다 .

WHY?

우리는 많은 현실의 문제를 해결하길 원한다.

소프트웨어는 현실의 문제를 해결하기 위한 좋은 환경이다.

이제 우리는 현실의 문제를 소프트웨어 세상에 표현하고자 한다.

세상엔 많은 실체들이 존재한다.

이 것들을 모두 프로그래밍으로 녹여 내고 싶다.

어떻게 표현하는 것이 좋을까 ?

예시를 들어보자.

수 많은 사람들이 존재한다.
짱구 , 철수 , 영희 ...
이들은 공통적인 속성이 있다.

모두
몸무게 , 키 ,나이 , 이름 를 가지며
각각은 다를 수 있다.
또 공통된 동작을 한다.
걷고 , 말한다.

이 공통된 속성 과 동작은 각기 다른 결과를 낼수도 있고 , 다른 방식을 사용 할수 도 있지만 ,
행위의 목적(?)과 행위를 한다는 것은 공통된다.

이 것들은 추상화를 할수 있다.

사람들은 추가적인 속성/동작 을 가질 수는 있으나 필수 적으로 가져야하는 동작/속성이 있다.

이것들은 추상화를 통해 클래스 로 표현할 수 있다.

클래스

    class 사람{
        int 키;
        String 이름;
        String 혈액형;
        int 몸무게;
        int 나이;
        String 국적;

        public void 걷는다( ){
        };

        public void 말한다(){
        }



    }

객체

실제하는 물체 / 우리가 소프트웨어에 표현하고 싶은 주체이다.

예로는 짱구 영희 같은 여러 사람들을 표현하는데에 있어서 /

각각은 같은 속성을 가지고있지만 같은 값을 가지고있진 않다.

각각의 이름은 다를수 있고 , 각각 객체의 나이는 다를수 있다.

그러나 이들은 실체한다.

객체는 이 실체 한다에 더욱이 집중한다.

인스턴스


 사람 짱구 = new 사람();

 사람 영희 = new 사람();

짱구.이름 = "짱구"

영희.이름 = "영희"

System.out.print(짱구 instanceOf 사람)  //true

System.out.print(영희 instanceOf 사람)  //true

이와 같이 고양이와 강아지는 추상화된 클래스를 구체화 하여 , 실체화되어 동물이 되었다.

instanceOf 에서 알수 있듯이 instance 는 어떤 클래스를 구체화하여 인스턴스가 되었다는 관계적 측면을 더욱이 표현하고 있다.

'OOP' 카테고리의 다른 글

OOP ) SOLID - 객체지향 5원칙  (0) 2019.05.18
OOP ) 타입, 추상화  (0) 2019.04.28
OOP ) 상태 , 행동 , 식별자  (0) 2019.04.26
OOP) 역할 , 책임 , 협력  (0) 2019.04.22
OOP ) Class,객체간의 소통  (0) 2019.04.07
Comments