객체 지향 프로그래밍 본문

Layer 7

객체 지향 프로그래밍

disso1p1 2020. 9. 10. 00:00

 

 

 

 

객체란 ?

변수, 자료 구조, 함수, 메소드 처럼 데이터나 식별자에 의해 참조되는 공간

 

 

객체 지향 프로그래밍이란 ?

객체들의 모임을 지향하는 프로그래밍이다. 즉, 객체들로 데이터를 처리하고, 메시지를 주고 받는다.

 

객체 지향 언어

자바, 파이썬, C++, C# 등등

 

객체 지향 프로그래밍의 장점

  • 직관적인 코드 분석 가능
  • 소프트웨어 개발과 보수가 간편
  • 프로그래밍을 배우기 더 쉬움

객체 지향 프로그래밍의 단점

  • 실제 세계의 모습을 그대로 반영하지 못함

 

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

  • 자료 추상화

중요한 정보만 표현함 -> 프로그램을 간단히 만듦

자료 추상화를 톡해 정의된 자료형을 추상 자료형이라고 함. -> 자료 표현과 자료형의 연산을 캡슐화한 것으로 접근 제어를 통해서 자료형의 정보를 은닉 가능.

 

  • 상속

새로운 클래스 ( 하위 클래스, 자식 클래스 ) 가 기존 클래스 ( 상위 클래스, 부모 클래스 ) 의 자료와 연산을 이용할 수 있게 하는 기능

 

  • 다중 상속

클래스가 2개 이상의 클래스로부터 상속받을 수 있게 하는 기능 -> 클래스들의 기능이 동시에 필요할 때 사용

 

  • 동적 바인딩

실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩으로 컴파일 시간에 완료 ( 정적 바인딩의 반대

 

객체 지향 프로그래밍이 필요한 이유

아까 말한 장점들처럼,

  • 직관적인 코드 분석 가능
  • 소프트웨어 개발과 보수가 간편
  • 프로그래밍을 배우기 더 쉬움

이런 이유가 있겠고,

 

고유한 일과 데이터를 부여함으로써 이 프로그램이 어떻게 동작하는지 파악하기 쉽게 하고, 데이터를 객체별로 나눠 다른 객체에서 접근하지 못하게 한다.

그리고 상속의 기능으로 코드의 중복을 없앱으로써 유지 보수에 많은 비용을 줄일 수 있다.

'Layer 7' 카테고리의 다른 글

Docker, Container  (0) 2020.09.16
BaskinRobins31 - Stack Pivoting  (0) 2020.09.14
운영체제 메모리 할당 알고리즘  (0) 2020.09.02
[Pwnable] Codegate 2018 - BaskinRobins31  (0) 2020.09.01
바이너리 분석 2 - RTL ( NX-bit bypass )  (0) 2020.08.25
Comments