내가 이해한 객체지향 프로그래밍 OOP

gh·2022년 4월 22일
0

여러가지 프로그래밍 방법론의 목적은 프로그래밍을 잘~ 하는것이다. 그러면 객체지향은 프로그래밍은 어떻게 잘 하는것 일까? 단순히 요소나 원칙을 암기는 하는 것보다는 나오게 된 배경과 목적을 알면 조금 더 쉽게 이해할 수 있을거 같아 알아보았다.

객체지향 프로그래밍이 나오게 된 배경

기존의 프로그래밍 기법은 절차 지향 프로그래밍과 구조적 프로그래밍이다. 이들의 단점은 데이터의 처리방법을 구조화 했을 뿐 데이터 자체는 구조화 하지 못하였다고 한다. 그러면 어떻게 데이터를 구조화 할것인가? 여기에서 고민하다 나온 방법이 객체지향 프로그래밍이다. 아마 OOP를 만들 때 다음과 같은 목표를 설정하였을 것이고 현재 OOP의 장점이다.

  • 데이터를 구조화 하자.
  • 코드의 재사용 성을 높이자.
  • 유지보수를 쉽게 할수 있게하자.

클래스와 객체

위 목표를 달성하기 위하여 클래스와 객체라는 개념이 도입 되었다. 클래스는 객체의 명세서라고 할수 있으며 클래스를 통해 객체를 만들수 있게 된다. 객체는 속성과 기능으로 구조화 되어있고 이에 대한 정의는 클래스에서 한다.

객체지향의 4대 특성

캡슐화, 상속, 추상화, 다형성

  • 캡슐화 : 변수와 함수를 하나의 단위로 묶는것을 의미한다. 테이터를 구조화 하기 위해 사용된 개념으로 생각된다. 속성과 기능이 명세되어 있는 클래스 자체가 캡슐화되었다고 생각 된다.
  • 상속 : 재사용성 및 유지보수를 쉽게 하기 위해 도입된 개념이다. A, B 클래스의 공통된 부분이 있다면 C라는 클래스에 공통된 것들을 모으고 A,B 에서 상속받아서(확장 또는 추가) 쓰는 것이다. 기존 방식에서 코드를 수정할려면 A,B를 각각 수정해야하지만, 상속을 이용하면 C라는 클래스에서만 수정하면 A,B 모두 적용된다.
  • 추상화 : 일반적으로 2가지 개념이 있는것 같다. 데이터를 구조화 하는 관점에서는 클래스를 내 목적에 맞게 설계하는것 하나. 유지보수를 쉽게 하는 관점에서는 추상화한것을 두어 최소한의 형만 유지한체 실제 구현부(또는 구제척인것)를 분리 하는것이다.
  • 다형성 : 정의로는 하나의 변수, 또는 함수가 상황에 따라 다른 의미로 해석될수 있는것이며, 코드의 재사용성과 유지보수를 쉽게 하기 위해 도입된 개념으로 생각된다. 대표적으로 오버라이딩이 있다.

결론

객체지향 프로그래밍에 대해 알아 보고 내 생각대로 풀이를 해보았다. 그래서 객체 지향의 특성만 알면 잘~ 프로그래밍 할수 있을까? 아니다. 수학공식을 안다고 해서 문제를 풀수 있는게 아닌 것처럼 공식을 문제에 잘 적용 하듯이 특성들을 잘 적용해야한다. 그럼 코드를 어떻게 적용 해야할까? 다행히도 객체지향 5원칙(SOLID)이라고 해서 방향성을 제시하여 주셨다. 다음글에서는 그에 대해 알아보려고 한다.

P.S 위에 기술한 내용들은 책과 인터넷을 바탕으로 제 생각을 적은 것이라 틀릴 수 있습니다.

[참조]

profile
개발자~

0개의 댓글