OOP

April 20, 2020

OOP

  1. 메모리영역

    • Static 프로그램이 실행되면서 같이 올라가는 것(console.log, var, const, let)
    • Stack 프로세스 안에서 메인 함수와 메인함수 위에서 호출되는 메서드들
    • Haep 객체와 배열 같은 데이터 크기가 일정하지 않은 변수나, 새로운 객체를 만들면 여기에 생성이 된다.
  2. UML 표기법

  • 클래스
    • 속성 : 값으로 표현할 수 있는것(리터럴)
    • 행위 : 자동사 / 타동사
  • 함수(코드 실행블록)
    • 프로시저 : 값을 리턴하지 않는다.
    • 함수 : 값을 리턴한다
  • 객체를 통해서만 이벤트(함수)를 호출(메소드)
  • 클래스란, 분류하는 작업
  • 객체는 클래스를 통해 속성과 행위를 넣어 만드는것
  • 클래스는 분류, 객체는 그 분류안에서 유일한 값을 가지고 있는다.
  • 모든 객체안에서는 사용되는 값은 클래스의 정적멤버로 사용한다.
  • 인터페이스는 클래스로 분류하는것보다는 아래에 추가하는것이 좋다
  • 클래스는 조금 더 큰 범위에서 분류해준다.
  • 인터페이스는 작은 범위로 하기 때문에 비효율적이다.
  1. keyword
  • new + 생성자를 호출하면 heap영역안에 새로운 객체가 할당된다.
  • this는 새롭게 생성된 heap영역의 주소를 가르킨다
  • heap이 가득차면 out of exception
  • class 와 object는 다르다
    • 분류 : 유일무이
    • 사람 : 김연아
    • 펭귄 : 펭수
  • Null은 메모리의 0번지를 가르킨다
  • 오버로딩 : 함수를 재정의한다.
  • 오버라이딩 : 함수의 인자를 추가한다.
  1. 4대 원칙
  • 캡슐화(Encapsulation) : private 변수를 활용하여 해당 인자를 외부에서 접근못하게
  • 상속(Inheritance) : 상위에서 사용하던 기능을 하위에서도 사용할수있게 확장하는 것이다.
  • 추상화(Abstraction) : 해당 객체의 특징을 크게 나타내어 그 부분을 나타내는 것(모델링), 해당 분야에 대해서 분류하고 객체를 설명한다
  • 다형성(Polymorphism) : 사용편의를 위하여 override(중복정의) overroad(재정의)

SOLID

  1. SRP(단일 책임 원칙) 작성된 클래스는 한가지의 기능을 가져야 한다. 이유는 클래스가 여러가지의 기능을 가지고 있으면, 기능을 수정한다면, 부수효과가 발생하여 유지보수하기 어렵다. -> Kiss : Keep It Small and Simple 작고 간단하게 만들어라

  2. OCP(개방 폐쇄의 원칙) 변경되어야 할 부분과 변경되지 않아야 할 부분에 대해서 확실히 하여 구현에 의존하기 보다는 정의한 인터페이스에 의존하도록 코드를 작성한다. 이 부분(모듈이 만나는 부분은 인터페이스로 정의한다) 인터페이스는 표준을 강조한다(소나타 / 마티즈 보다는 자동차를 운전하는 나)

  3. LSP(리스코프 치환 원칙) 자식 클래스는 최소환 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다는 설계 원칙, 자식 클래스는 부모 클래스의 책임을 무시하거나, 재정의하지 않고 확장만 수행하도록 한다. 하위 클래서는 상위클래스의 기능을 사용되어야 한다.

  4. ISP(인터페이스 분리 원칙) 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 설계원칙 SRP는 객체의 단일 책임을 뜻한다면, ISP는 인터페이스의 단일 책임이다. 클라이언트가 원하는 최소한의 모습만 보여줘라 남자 = 직장인, 아빠, 친구, 옆집사람 회사에서는 직장인의 모습만 보여주는 것처럼 클라이언트가 원하는 최소의 모습만 구현

  5. DIP(의존 역전 원칙) 자동차 -> 스노우타이어 자동차는 스노우타이어에 의존한다. 스노우타이어에 의존하기 보다는 상위 인터페이스인 타이어에 의존하게 하자?? 스노우타이어라는 상세구현체보다는 타이어라는 상위 인터페이스에 의존한다


© 2023, Customized by Joon