ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 객체지향 프로그래밍 개념 / 객체 모델링과 클래스 다이어그램 개념
    IT/개발(자바, 서블릿, 스프링 등) 2019. 12. 7. 16:07

    객체지향 프로그래밍

     

    C는 절차적 프로그래밍 언어이고 자바는 객체지향 프로그래밍 언어이다. 절차적 프로그래밍은 프로그램을 실행하는데 필요한 모든 데이터를 미리 준비하고, 준비된 데이터를 사용하여 순서대로 처리해 나가는 방식이다. 객체지향 프로그래밍은 작업 순서를 중요하게 생각하지 않는다. 기능별로 작업을 분리한 후 필요한 기능이 있다면 가져다 사용하는 방식이다.

     

    객체지향 프로그래밍의 주인공은 객체이다! 객체는 속성과 동작으로 이루어져 있다.(객체 = 속성 + 동작) 객체지향 프로그램을 구현하기 위해 객체를 선정하고 객체의 속성과 동작을 정의하는 것을 객체 모델링이라고 한다. 객체를 모델링하면 해당 객체의 특성을 쉽게 알 수 있다.

     

    객체를 만들기 위해 클래스가 필요하다. 클래스는 객체를 만드는 틀이다.

     

    객체지향 프로그래밍은 객체 단위로 작업하므로 객체를 구조화하는 객체 모델링을 가장 먼저 해야한다. 객체 모델링을 완료하면 프로그래밍 언어로 표현할 수 있도록 클래스 다이어그램을 작성한다. 클래스 다이어그램은 객체 모델링에서 표현된 구조를 프로그래밍 언어로 표현하기 쉽게 작성한 것이다.

     

    클래스 다이어그램에서는 객체 모델링에서 사용했던 용어를 아래와 같이 다르게 표현한다.

     

    객체 모델링 클래스 다이어그램 설명
    객체 클래스 객체를 대표하는 클래스 이름 정의
    속성 필드 객체가 가진 고유한 특성을 정의
    동작 메서드 객체가 할 수 있는 동작을 정의

     

    아래는 예시다.

    객체 모델링
    개체
    속성

    이름: bokchoi

    키: 100

    몸무게: 1

    행동

    걷다

    공부하다

    먹다

    클래스 다이어그램
    개체 Me
    속성

    name: String

    height: int

    weight: int

    행동

    walk()

    study()

    eat()

    모델링한 객체를 클래스 다이어그램으로 표현하는 작업을 마치면 마지막으로 클래스 다이어그램을 보고 자바 소스 파일을 작성한다. 자바 소스 파일은 클래스 단위로 작성한다.

     

    접근 제한자는 클래스와 필드, 메서드를 선언할 때 지정할 수 있다.

    접근 제한자 접근할 수 있는 조건
    private 접근하는 곳이 같은 클래스인가?
    (default) 접근하는 곳이 같은 패키지인가?
    protected 접근하는 곳이 같은 패키지인가? 또는 상속관계에 있는가?
    public 조건 없이 무조건 접근 가능

     

    클래스 패키지

    다양한 파일을 정리할 때 디렉터리로 구분하듯 클래스도 디렉터리로 분류해 체계적으로 관리해야 한다. 패키지는 클래스를 고유하게 만들어주는 역할을 한다. 컴파일러는 패키지명과 클래스명을 합쳐서 전체 이름으로 클래스를 구분한다.

     

    클래스 임포트

    객체지향 프로그래밍은 기능을 객체 단위로 만들어 놓고 필요한 객체를 가져다 사용한다. 이 때 사용하려는 객체는 클래스 파일로 만들어져 있다. 객체를 사용할 때 현재 객체와 같은 패키지에 있는 경우는 상관없지만, 다른 패키지에 있는 경우는 어떤 패키지에 속해 있는지를 명시해줘야 한다. 이를 위해서 import문을 사용한다.

     

    import com.test.java.TEST01; import com.test.java.*;
    import com.test.java.TEST02;

     

    *는 모든 파일을 의미한다. 왼쪽의 두 문장을 오른쪽의 한문장으로 줄일 수 있다. 그런데 패키지의 모든 파일만을 의미한다. 하위 패키지는 제외이다. 만약 com.test.subpackage.TEST03;이 있다면, 하위 패키지이기 때문에 포함하지 않는다.

Designed by Tistory.