객체지향[typesciprt]

CH_Hwang·2021년 11월 19일
0

OOP

목록 보기
2/2

객체지향이란?


객체를 중심으로 캡슐화, 다형성, 상속 등을 이용하여 코드 재사용을 증가시키고, 유지보수를 감소시키는 장점을 얻기 위해 객체들을 연결 시켜 프로그램이 하는 것

장점

객체 지향적인 프로그래밍을 하면 코드 중복을 해결하고 역할 분담을 좀 더 확실하게 할 수 있어 가독성이 높아진다.

  • 생산성👍
  • 유지보수 및 확장성👍

객체지향 요소


  • 캡슐화(Encapsulation)

  • 데이터와 로직의 결합.
    클래스는 인터페이스와 구현으로 나누어 설계하고 구현은 외부와 노출을 최소화 하여 모듈간의 결합도를 떨어뜨려 유지보수성을 높인다.

정보 은닉(information Hiding)

프로그램의 세부 구현을 외부로 드러나지 않도록 특정 모듈 내부로 감추는 것이다.
서로 연관 있는 데이터와 함수들을 오브젝트 안에 담아두고 외부에서 보일 필요가 없는 세부 데이터를 숨겨 높음으로 외부에서 내부 데이터를 변경할 수 없도록 할 수 있다.
일반적으로 세 종류의 접근 제한이 사용된다.

  • constructor
    class를 가지고 instance(object)를 만들 때 항상 호출되는 함수로 데이터를 담아 호출할 수 있다.
    static 이란 키워드를 사용해서 object를 만드는 함수를 제공한다면 private constructor로 설정해두어 static method를 사용할 수 있도록 권장한다.
  • public
    클래스의 외부에서 사용 가능하도록 노출시키는 것이다.
    외부에서 데이터를 확인 또는 변경할 수 있다.
    class 안에서 변수나 함수에 따로 키워드를 사용하지 않으면 기본적으로 public 상태이다.
  • private
    클래스의 내부에서만 사용되며 외부로 노출되지 않는다.
    외부에서 데이터를 확인 또는 변경할 수 있다.
  • protected
    다른 클래스에게는 노출되지 않지만, 상속받은 자식 클래스에게는 노출되는 것이다.
    외부에서 접근할 수 없고 상속받은 class만이 접근이 가능하다.

추상화

  • 내부의 복잡한 기능 private 키워드를 사용해 외부에서 보이지 않도록 하여 외부에서 보이는 인터페이스(함수)만을 통해 내부 기능을 이해하지 않아도 사용할 수 있다.
  • 상속(extends)

하위 클래스에서 상위 클래스의 데이터나 함수를 사용할 수 있도록 하는것을 말한다. (재사용성👍)

  • extends라는 키워드를 사용하여 상속 받을 수 있다.
  • 상속 할 때 constructor가 private일 경우 상속이 되지 않는다. public 또는 자식 클래스에서 접근이 가능하도록 protected 키워드를 사용해야 한다.
  • 하위 클래스에서 상위 클래스의 함수를 이용하고 싶다면 super 키워드로 접근할 수 있다.
  • 하위 클래스에서 constructor는 반드시 super를 호출해야 하며 상위 클래스에서 필요한 데이터를 super를 이용해 전달해 주어야 한다.
  • 타입스크립트에서 상속은 두가지 이상 받을 수 없으며 부모클래스에 변화가 있을 경우 자식 클래스도 영향을 미침
  • 다형성(Polymorphsim)

하나의 객체에 여러가지 타입을 대입 할 수 있음.
하나의 변수, 메서드가 상황에 따라 다르게 해석되는 것을 이야기 하기도 하며 오버라이딩과 오버로딩을 예로 들 수 있음.

  • A라는 상위 클래스에 test라는 메서드가 있고 B라는 하위 클래스에 동일하게 test라는 메서드가 있을때, 하위 클래스로 만들어진 인스턴스에 test 메서드를 호출하면 하위 클래스에 정의된 test 메서드가 실행되는데 이게 오버라이딩.
  • 오버로딩은 동일한 메서드가 매개변수에 따라 여러게 정의되고 호출할 때의 매개변수에 따라 다르게 동장하도록 할 수 있는 것

0개의 댓글