OOP

특징

다형성polymorphism

서로 다른 유형의 개체에 단일 인터페이스를 제공한다. 다형성은 이름과 파라미터가 동일한 유형을 재정의할 수 있음을 의미한다.

  • Template 다루는 형이 다르지만 함수 내부의 처리 방법이 같다.
    • Java에는 Generics가 있고, C++과 달리 하나의 컴파일된 코드를 만든다. 하지만 컴파일 타임에 오류를 체크할 수 있는 용도는 동일하다.
  • Overriding 이름과 파라미터가 동일한 함수를 하위 클래스에서 재정의한다. 다형성과 관련 있다.

Overloading 이름은 같지만 파라미터가 다른 함수를 다른 방법으로 처리한다. 다형성과 관련 없다.

  • C는 당연히 오버로딩이 없다.
  • Go도 없다. 이름만으로 처리하기 때문이다. 하지만 편법으로 가능하다.

함수가 아닌 연산자를 재정의 하는 연산자 오버로딩operator overloading도 다형성과 관련 있다.

캡슐화 encapsulation

데이터와 메소드를 함께 제공하며, 데이터 직접 접근을 제한한다.

은닉화 information hiding 데이터를 외부에서 직접 접근하는게 아닌 함수를 통해서 접근한다.

추상화 Abstraction

상속 Inheritance

디자인 패턴

Factory Pattern

가장 널리 사용하는 생성 패턴 중의 하나다. 팩토리 패턴의 유용성은 로직과 분리된 공통 인터페이스를 사용하는 방식에 있다. (안드로이드 디자인 패턴과 활용 사례, 2016) 실제로 if else가 복잡하게 중첩된 구문을 Factory Pattern으로 깔끔하게 정리할 수 있었다. 이외 Abstract Factory Pattern, Builder Pattern으로 더 깔끔한 형태로 구현 가능하나 Factory Pattern의 기본적인 형태로도 충분했다.

State Pattern

State Pattern을 이용해 유한 상태 머신 finite state machine을 구현할 수 있다. coin-operated turnstile 개찰구를 예(위키피디어)로 들 수 있는데, State Pattern으로 구현 가능하다. 안드로이드 구현 수학적으로 모델링할 수 있는 모든 것을 모델링하는데 사용할 수 있다.

State in UML (위키피디어)

Last Modified: 2020/01/22 11:35:38


AWS  ·  Docker  ·  NLP 링크  ·  알고리즘 링크  ·  머신러닝 링크  ·  Python  ·  2020 Book Reports  ·  사회심리학  ·  Information Retrieval  ·  통계학  ·  통계학 응용  ·  알고리즘  ·  OOP  ·  2019 Book Reports  ·  머신러닝  ·  Android Development  ·  데이터 사이언스  ·  비지니스  ·  인공지능  ·  진화생물학  ·  이산수학  ·  수학  ·  미래학  ·  Project Management  ·  LifeHacks  ·  C++  ·  2017 Book Reports  ·  Python Data Structure Cheatsheet  ·  Decision Tree  ·  LeetCode  ·  TensorRT  ·  NLP  ·  Hadoop, Spark  ·  데이터 마이닝  ·  CNN, RNN  ·  2018 Book Reports  ·  운영체제  ·  자료구조  ·  머신러닝 분류기  ·  거리  ·  Support Vector Machine  ·  OAuth 2.0  ·  Naive Bayes  ·  Activation, Cost Functions  ·  Jupyter Notebooks  ·  RSA  ·  컴파일러  ·  딥러닝  ·  Word Embedding  ·  컴퓨터시스템구조  ·  영어  ·  Go  ·  Scikit Learn  ·  XGBoost  ·  Software Deployment  ·  NLP 실험  ·  MySQL  ·  Keras  ·  Java  ·  HTML, CSS, JavaScript
is a collection of Papers I have written.
© 2000 - Sang-Kil Park Except where otherwise noted, content on this site is licensed under a CC BY-NC 4.0.
This site design was brought from Distill.