CS

[Java] 객체지향 프로그래밍(OOP; Object-Oriented Programming)

KJihun 2023. 10. 19. 11:33
728x90

 

객체지향 프로그래밍(OOP; Object-Oriented Programming)

OOP는 소프트웨어 개발 방법론 중 하나로, 현실 세계의 사물을 모델링하여 소프트웨어를 개발하는 방법이다.

프로그램을 "객체"의 모임으로 보고, 객체들 간의 상호 작용을 통해 프로그램을 구성한다.

크게 클래스, 객체, 메서드로 구성된다.

 

 

클래스(class)

같은 종류의 집단에 속하는 속성과 행위를 정의한 것(인스턴스의 청사진)


객체(object)

데이터(상태) 와 데이터를 처리하는 메서드(행위)를 캡슐화한 하나의 SW 모듈

클래스로 의해 생성된 객체를 인스턴스(instance) 라고 하며,

클래스로부터 새로운 객체를 생성하는 것을 인스턴스화 라고 한다.

  • 데이터: 속성, 상태, 변수, 상수, 자료구조 라고도 함
  • 메서드(method): 객체가 수행하는 기능으로 객체가 갖는 데이터를 처리하는 알고리즘
  • 메시지: 객체에게 어떤 행위를 하도록 지시하는 명령 
  • 연관성 : 두개 이상의 객체(클래스)들이 상호 참조하는 관계종류 의미 특징
    is member of 연관화 2개 이상의 객체가 서로 연관되어 있다
    is instance of 분류화 동일한 형의 특성을 갖는 객체들을 모아 구성하는 것
    is part of 집단화 관련 있는 객체들을 묶어 하나의 상위 객체를 구성
    is a 일반화 공통 성질들로 추상화한 상위 객체를 구성하는 것
    is a 특수화/상세화 상위 객체를 구체화하여 하위 객체를 구성하는 것

 

 

객체지향의 특징

  • 캡슐화 (Encapsulation): 객체의 데이터와 메서드를 함께 묶는 것을 의미하며, 이를 통해 데이터의 접근을 제한하여 객체 내부의 상태를 보호할 수 있다.
  • 상속 (Inheritance): 부모 클래스의 속성값을 물려받아 자식 클래스를 생성하는 개념이다. 자식 클래스는 물려받은 속성에서 다른 속성값들을 추가하거나 수정하여 사용할 수 있다
  • 다형성 (Polymorphism): 타입이 다르다면 같은 이름의 메서드가 다른 동작을 할 수 있도록 하는 개념
  • 추상화 (Abstraction): 복잡한 시스템에서 중요한 부분만을 간추려서 표현하는 것. 속성 위주가 아닌 동작 위주로 정의하는 작업을 해야한다(동작에 연관이 되지 않는 속성들은 불필요하므로 불필요한 속성들을 걸러내기 위해)

객체지향 프로그래밍은 코드의 재사용성을 높이고 유지보수를 용이하게 만들어준다.

또한 현실 세계의 복잡한 시스템을 모델링하기에 적합하며, 대규모 프로젝트의 개발을 효율적으로 진행할 수 있다.