COMPUTER SCIENCE

CS / 객체지향(Object Oriented)의 특징 4가지

24_bean 2022. 8. 7. 21:22

객체지향언어 : Object Oriented Language (OOL)

 

객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나입니다.

"객체" 들의 모임으로 프로그램을 파악하고자 하는 관점인데, 이 때 각각의 객체는 메세지를 주고받고 데이터를 처리합니다.

 

객체 지향 프로그래밍의 특징으로는

  1. 프로그램을 유연하게 만들 수 있다.
  2. 변경을 쉽게 만들 수 있다.
  3. 개발과 보수가 간편하다
  4. 직관적인 코드 분석이 가능하다

등이 있습니다.

 

소프트웨어 공학의 관점에서 볼 때 소프트웨어의 질을 향상하기 위해선 강한 응집력(Strong Cohesion)과 약한 결합력(Weak Coupling)을 지향해야합니다.

객체 지향 프로그래밍(OOP)의 경우 하나의 문제 해결을 위한 데이터를 클래스에 모아 놓은 데이터형을 사용함으로써 응집력을 강화하고, 클래스간의 독립적인 디자인을 함으로써 결합력을 약하게 합니다.


객체 지향 프로그래밍을 위해 고안된 대표적인 언어를 몇가지 소개하겠습니다.

 

  • Simula67 : 최초의 객체지향언어
  • VB.NET : visual basic .NET / visual basic에서 진화된 객체 지향 언어
  • Objective-C :  C-프로그래밍언어 small talk 스타일의 메시지 구문을 추가한 객체 지향 언어
  • C++ : C-프로그래밍언어에서 진화된 객체 지향 언어로 매우 복잡한 표준 규격을 가지고 있다.
  • C# : 마이크로소프트에서 개발한 언어로 닷넷 프레임워크의 한 부분으로 만들어졌다.
  • JAVA : 현재 웹 애플리케이션 분야에서 가장 많이 활용되며 컴파일된 코드가 플랫폼 독립적이라는 점이 특징이다
  • Python : 다양한 플랫폼에서 사용가능하며, 라이브러리(모듈)이 풍부하다. 특히 접착체 언어라는 별명을 가지고 있는데 범용성이 매우 높으며 넓은 커뮤니티를 자랑한다.
  • Perl : 실용성을 모토로하는 언어로 C,sed,sh 등 다른 프로그래밍 언어에서 뛰어난 기능을 많이 도입하여 사용하고있다.
  • Ruby : 가독성을 중시하며 매우 이식성이 높다. 순수 객체 지향 언어로 정수나 문자열 등을 포함한 데이터 형식 등 모든 것이 객체이다.

 

어떤 것이 더 뛰어난 언어이다 라는 것을 정의할 수는 없습니다.

개발 환경과 상황에 따라 적절하게 사용하는 것이 가장 좋아보입니다.

 

소개한 언어 외에도 수 많은 종류의 언어가 객체 지향 프로그래밍을 지향합니다.


위에서 언급한 특징에 추가하여 주요 특징 4가지를 소개하겠습니다.

특징

  • 추상화 : Abstraction
    • 필요한 정보를 중심으로 간소화하는 것
    • e.g.) 지하철 노선도 -> 실제 지형도보단 상대 위치를 중심으로 지도를 간소화

London underground - 아주 매우 대단히 유명한 레퍼런스

  • 캡슐화 : Encapsulation
    • 추상화를 통해 객체를 정의했다면, 객체에 필요한 데이터나 기능(메소드)을 책임이 있는 객체에 그룹화시켜주는 것
     

Encapsulation

  • 상속 : Inheritance
    • 상위 클래스의 기능을 하위 클래스가 사용할 수 있는 개념.
    • 여러 객체에서 사용되는 기능을 하나의 클래스로 분리해서 사용할 수 있도록 위함.
    • 중복되는 코드의 재사용성을 위함.

Vehicle이 갖는 특징을 공통적으로 하위 클래스가 가진다

  • 다형성 : Polymorphism
    • 프로그래밍 언어 각 요소들(상수, 변수, 객체, 메소드, 등)이 다양한 자료형(Type)에 속하는 것이 허가되는 성질
    • Overloading, Overriding, functional interface 등이 예시이다.
    • 더 쉬운 예시로, 운전을 한다면 포르쉐도 몰 수 있고, 트럭도 끌 수 있고, 심지어 오토바이도 운전할 수 있다!는 개념
     

상속과 헷갈리지 말자

 

* 상속과 다형성의 차이 :

  상속 다형성
기본 이미 존재하는 클래스의 속성 사용, 새로운 클래스 생성 여러 형식에 대한 공통 인터페이스
위치 클래스에 구현 함수 / 메소드에 구현
용도 재사용 및 코드 간략화 Overloading, Overriding에서 호출할 함수의 형식을 오브젝트가 결정할 수 있게 함

 


Reference : https://www.w3schools.com/cpp/cpp_oop.asp

 

C++ OOP (Object-Oriented Programming)

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

https://en.wikipedia.org/wiki/Object-oriented_programming

 

Object-oriented programming - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Programming paradigm based on the concept of objects "Object-oriented" redirects here. For other meanings of object-oriented, see Object-orientation. Object-oriented programming (OOP)

en.wikipedia.org