Object Oriented Programming

이유석·2022년 1월 5일
0

OOP

목록 보기
2/3

프로그램을 여러개의 "객체" 로 나누고 그 객체들의 상호작용으로 서술하는 방식.

장점

  • 코드의 재사용성이 높아진다.

  • 유지보수가 쉽다.

  • 코드가 간결해진다.

단점

  • 처리 시간이 비교적 오래 걸린다.

  • 프로그램을 설계할 때 많은 고민과 시간을 투자해야 한다.

4가지 특징

  • 추상화(Abstraction)
    필요로 하는 속성이나 행동을 추출하는 작업
    인터페이스로 클래스들의 공통적인 특성(변수, 메소드) 들을 묶어 표현 하는 것

    ex) 아우디, BMW, 벤츠는 모두 '자동차' 하는 공통점이 있다.
    자동차라는 추상화 집합을 만들어두고, 자동차들이 가진 공통적인 특징들을 만들어 활용한다.

  • 캡슐화(Encapsulation)
    높은 응집도 와 낮은 결합도를 유지할 수 있도록 설계하는 것
    한 곳에서 변화가 일어나도 다른 곳에 미치는 영향을 최소화 시키는 것

    응집도 : 객체 안의 모듈 간의 요소가 얼마나 서로 밀접해 있는가를 나타내는 말
    결합도 : 어떤 기능을 실행할 때 다른 클래스나 모듈에 얼마나 의존적인가를 나타내는 말

    즉, 독립적으로 만들어진 객체들 간의 의존도를 최대한 낮게 만드는 것이 중요하다.

    캡슐화는 정보 은닉(Information Hiding) 을 활용한다.

    외부에서 접근할 필요가 없는 것들은 private으로 접근하지 못하도록 제한을 두는 것 이다.

  • 상속(Inheritance)
    하나의 클래스가 가지고 있던 특징들을 그대로 다른 클래스가 물려 받는 것
    일반화 관계 : 여러 객체들이 지닌 공통된 특성을 부각시켜 하나의 개념으로 성립하는 과정
    또 다른 캡슐화 : 자식 클래스를 외부로부터 은닉 하는 캡슐화의 일종

    기능의 일부분을 변경하는 경우, 자식 클래스에서 상속받아 수정 및 사용함

    Overriding : 부모 클래스의 메소드를 자식 클래스의 용도에 맞게 수정
    코드의 재사용성을 높임 (메서드 재정의)

  • 다형성(Polymorphism)
    서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 능력
    한 요소에 여러 개념을 넣어 놓는 것

    간결한 코드 및 유연성 향상

    Overloading : 같은 이름의 메서드가 인자의 개수나 자료형에 따라서 다른 기능을 하는 것.

    Overriding : 같은 이름의 메서드가 여러 클래스에서 다른 기능을 하는 것.

객체 지향 설계 과정

  1. 제공해야 할 기능을 찾고 세분화 한다. 그리고 그 기능을 알맞은 객체에 할당한다.
  2. 기능을 구현하는데 필요한 데이터를 객체에 추가한다.
  3. 그 데이터를 이용하는 기능을 넣는다.
  4. 기능은 최대한 캡슐화 하여 구현한다.
  5. 객체 간에 어떻게 메서드 요청을 주고 받을 지 결정한다.
profile
https://github.com/yuseogi0218

0개의 댓글