티스토리 뷰

728x90
객체지향의 개념

OOP(Object Oriented Programming)

: 모듈화된 소프트웨어 개발에 대한 요구 발생, 객체지향프로그래밍

 

- 객체지향을 통해 보다 높은 유지보수성 유지가 가능해짐

- 객체와 객체 간 자유로운 데이터 이동이 가능해짐

 

객체, 클래스, 인스턴스

- 객체 : 현실 세계에 존재하는 유,무형의 모든 것

  • 정적인 요소 : 변수 (Variable) [이름, 속도, 색깔]
  • 동적인 요소 : 메서드 (Method) [시동켠다(), 이동한다()]

- 클래스 : 현실 세계의 객체를 컴퓨터 메모리에 생성할 수 있는 템플릿

Class Car { //클래스
	String name; //변수
    
    void startEn(){} //메서드
}

 

- 인스턴스 : 컴퓨터 메모리에 존재하는 객체

 

 

객체지향 언어의 주요 개념 1) 상속과 다형성
  • 상속 (Inheritance)

        : 기존의 클래스를 이용해서 새로운 클래스를 작성함

 

       - 상속을 통해 "중복"이라는 문제 해결

         : 상속은 코드를 간결하게 하여 코드의 재사용성을 높이는 객체지향의 핵심 개념

           부모 클래스와 자식 클래스의 관계가 일반화, 특별화('is a ~')에 있어야 함.

 

       - 자바는 상속을 통해 객체들 사이의 계층 구조를 이룰 수 있음

 

  • 다형성 (Polymorphism)

        : 하나의 인터페이스를 이용해 서로 다른 구현을 제공함

 

        - 다형성은 메서드 오버로딩(Overloading)과 메서드 오버라이딩(Overriding)을 통해 지원됨

        - 메서드 오버로딩 : 한 클래스 안에 같은 이름의 메서드를 여러 개 정의하면서, 그 인자의 개수나 유형을 다르게 해 놓은 형태

        - 메서드 오버라이딩 : 상속 관계에 있는 하위 클래스가 상위 클래스가 가지고 있는 메서드를 재정의하는 것

 

객체지향 언어의 주요 개념 2) 추상화, 캡슐화, 정보 은닉, 메시지
  • 추상화 (Abstraction)

        : 구체적인 사실들을 일반화시켜 기술하는 것.

          현실 세계에 존재하는 다양한 객체들의 공통된 특성을 모아 일반화해 놓는 것

 

  • 캡슐화 (Encapsulation)

        : 변수와 메서드 하나의 추상화된 클래스로 묶는 과정을 의미함. 

         -> 객체가 제공하는 메서드를 통해 객체를 이용하고, 데이터가 실제 어떻게 처리되는 지는 알 필요 없음

 

  • 정보 은닉 (Information Hiding)

        : 객체지향 언어에서는 캡슐화된 변수나 메서드를 선택적으로 공개하거나 숨길 수 있음.

 

  • 메시지 (Message)

        : 객체 간에 서로 통신하는 방법

반응형