Object Oriented Programming

Jiyoung·2020년 11월 12일
0

프로그래밍 언어

기계어(Machine Languages)

  • 1과 0으로 조합됨
  • 컴퓨터의 native 언어로 인간이 기계어로 프로그래밍하기는 어려움

어셈블리 언어(Assembly Languages)

  • 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어
  • cpu를 통해 기계어로 바뀜
  • cpu 특성에 따라 달라지기 때문에 여러 환경에서 사용할 수 없음

고급 언어(High-Level Languages)

  • 저급(Low) 레벨일수록 Assembly 언어에, 고급(High) 레벨일수록 인간의 언어에 가까움
  • 자바스크립트는 상위 레벨 언어로 분류됨
  • 여러 환경에서 사용할 수 있음
  • 절차 지향적 언어(Procedural Languages)와 객체 지향적 언어(Object Oriented Languages)로 나뉨
  • 절차 지향적 언어는 모든 것을 순차적으로 진행하여 특정 기능을 하도록 만든 것이고, 객체 지향적 언어는 프로그램을 구성하는 모든 요소들을 객체로 만들어 사용하는 것임

OOP(Object Oriented Programming)란?

객체 지향 프로그래밍(OOP)이란 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, '객체(Object)'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식이다. 즉 실제 세상을 반영한 구조라고 할 수 있으며, 객체는 변수(Variables(Property))와 메소드(Methods)로 구성되어 있다. Property는 Variable or Data의 한 종류, Method는 Function의 한 종류이다.

이미지 출처: http://www.w3big.com/php/php-oop.html

Class: 객체를 생성하기 위한 프로토타입(prototype), 청사진(설계도, 틀). 아직 세부사항이 들어가지 않은 형태. 같은 종류의 집단에 속하는 속성과 행위를 정의한 것.
Object: Class에 세부사항이 들어간 형태로, Class의 인스턴스(instance)라고 함. Class가 정의한 프로토타입에 따라서 세부사항을 정해주면 Object가 됨. 세부사항은 Class가 가지고 있는 생성자(constructor)에서 정의할 수 있음.

OOP의 특성

1. 캡슐화(Encapsulation)

연관된 데이터(data)와 기능(function)을 하나로 묶어주는 것으로, 외부로부터 내부를 숨기는 은닉성의 특성을 포함한다. 캡슐화를 통해 코드를 수정하지 않고 재사용 할 수 있다.

2. 상속(Inheritance)

부모 클래스의 속성을 자식 클래스에 그대로 물려받는 것을 의미하는 것으로, 공통된 속성을 상속을 통해 쉽게 전달함으로써 불필요한 코딩을 피할 수 있다. 또한 속성의 일부분을 변경하고 싶을 때는 상속받은 자식클래스에서 해당 속성만 다시 수정해 주면 된다. 상속 시, Subclass(자식 클래스)는 base class(부모 클래스)의 property와 methods를 상속받는다.

3. 추상화(Abstraction)

불필요한 정보는 숨기고 중요한 정보만을 보여주는 것으로 공통의 속성이나 기능을 묶어 이름을 붙이는 것을 의미한다.

4. 다형성(Polymorphism)

같은 속성을 상속받았더라도 경우에 따라 다양한 형태로 표현될 수 있는 것을 의미한다. 즉 오버라이딩(Overriding)과 오버로딩(Overloading)이 가능하다.

오버라이딩(Overriding): 부모 클래스에서 정의된 메소드가 자식 클래스에서 다른 것으로 대체될 수 있는 것(부모 클래스의 메서드와 같은 이름, 매개변수를 자식 클래스에서 재정의 하는것).
오버로딩(Overloading): 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수를 다르게 하여, 매개변수에 따라 다르게 호출할 수 있게 하는 것(메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 함).

profile
경계를 넘는 삶

0개의 댓글