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

nRecode·2020년 5월 8일
0

OOP

목록 보기
1/1

(학습을 진행하면서 내가 이해하고 공부한 부분을 기록합니다!)


프로그램 언어의 종류

컴퓨터에서 사용할 수 있는 언어는 기계어, 어셈블리어, 고급언어가 있습니다. 간단히 정리 해보자면,

기계어는 컴퓨터가 사용하는 언어로 0과 1로 구성되어 있습니다. 실제로 사람이 코드를 작성하고 이해하는 것에 큰 무리가 있습니다.

어셈블리어는 기계어에서 숫자를 의미 있는 단어로 바꿔 사람들이 이해하기 쉽게 만든 언어입니다.

고급언어는 어셈블리어 보다도 사람들에게 이해가 더 편하도록 만들어진 프로그래밍 언어입니다. 언어의 문법구조가 기계어와 유사하면 저급언어라고도 부릅니다.

고급언어는 절차 지향과 객체지향으로 나눠집니다.

1. OOP란?

OOP

Object Oriented Programming의 약자로 객체의 관점에서 프로그래밍 하는 것

  • 프로그래밍 세계의 철학으로 사람이 이해하는 방법을 흉내한 방법론 입니다.
  • 객체는 유기적으로 연결하여 프로그래밍을 합니다.

Object와 Class

Object, 즉 객체는 대상을 나타냅니다.
구성요소 하나하나를 객체라고 할 수 있습니다.

Class는 객체들이 공통적으로 갖는 속성을 모아서 정의 내린 것 입니다. 코드 작성의 기본 단위이며 객체들을 찍어내는 템플릿이라고 이해했습니다.
Class는 속성(attribute)와 행위(Method)를 정의 합니다.

아직도 객체와 클래스는 붕어빵과 붕어빵 틀로 많이 비유되는 것 같습니다ㅎㅎ... 붕어빵 틀은 객체를 생성하는 Class이며 그 틀로 만들어진 붕어빵이 Object를 의미하게 되겠죠?

OOP의 4가지 특성

1) 추상화(Abstraction)

자료 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현해 프로그램을 간단히 만듭니다.

2) 캡슐화(Encapsulation)

데이터와 메소드를 클래스 하나로 묶어 메소드로 접근 할 수 있도록 합니다. 또한 객체 내부에서 필요로 하는 정보를 은닉을 하는 특징 또한 존재 합니다. 저는 캡슐 알약과 비슷하다는 생각이 들었습니다. 안에 필요한 약 성분들을 담아서 은폐시키기 때문이죠!

3) 상속(Inheritance)

이미 정의 되어있는 상위 클래스와 메소드를 비롯한 모든 속성을 하위 클래스가 물려받습니다.

예를 들어, 동물이라는 클래스의 속성을 강아지 클래스가, 또 고양이 클래스가 물려 받을 수 있습니다.

상속이 필요한 이유는 코드의 중복을 막을 수 있어 코드가 더 간단해 집니다. 그럼 유지보수가 더 수월하겠죠?

4)다형성(polymorphism)

다형성은 형태가 같은데 다른 기능을 하는 것을 의미합니다.
부모 클래스로 부터 상속을 받지만, 자식클래스에서 물려받은 속성을 재정의 할 수 있습니다. 이를 오버라이딩(같은 이름의 메소드가 여러 클래스에서 다른 기능을 하는 것)이라고 합니다.

예를 들어, 슈퍼카 클래스가 일반카 클래스의 속도속성을 상속 받았지만, 속도 속성을 재정의 하여 슈퍼카의 속도에 맞게 재정의 할 수 있습니다.

Reference

profile
안정성, 확장성 있는 서버를 구축하고 가꾸는 개발자를 목표로 공부하고 있습니다. 🤔🤔🤔🤔 부족하기에 맞지 않는 내용이 있을 수 있습니다. 가감없이 피드백 해주시면 정말 감사하겠습니다..🙏

0개의 댓글