티스토리 뷰

Object Oriented Programming (OOP)

객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법

 

클래스, 객체, 인스턴스

클래스 (class)

  • 객체를 만들어 내기 위한 설계도 혹은 틀
  • 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성(attribute)와 행위(behavior)를 변수와 메서드로 정의한 것

객체 (object)

  • 소프트웨어 세계에 구현할 대상
  • 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중, 자신의 속성을 가지며 다른 객체와 식별가능한 것
  • 고유한 속성과 함수로 구성된 클래스를 통해 생성된다
  • 객체는 모든 인스턴스를 대표하는 포괄적인 의미이다

인스턴스 (instance)

  • 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
  • 클래스에서 정의한 것을 토대로 실제 메모리상에 할당된 것으로 실제 프로그램에서 사용되는 데이터

 

객체 지향 특징

  1. 추상화 (Abstraction)
    필요하지 않은 정보를 제외하고 필요로 하는 속성이나 행동을 추출하는 작업
    구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념 혹은 집합으로 다루는 수단
  2. 캡슐화 (Encaptulation)
    객체의 속성(data fields)와 행위(methods)를 하나의 클래스라는 캡슐에 묶는 것
    외부에서 객체의 내부데이터로 직접 접근하지 못하게 통제하여 정보 은닉
  3. 상속 (Inheritance)
    하나의 클래스가 가진 특징(함수, 데이터)을 다른 클래스가 그대로 물려받는 것
    기능의 일부분을 변경하는 경우 자식 클래스에서 상속받아 수정 및 사용
    상속은 캡슐화 유지, 클래스의 재사용이 용이하도록 해준다
  4. 다형성 (Polymorphism)
    하나의 객체가 여러 가지 타입을 가질 수 있는 것
    • 오버로딩 (Overloading) : 이름이 같은 메서드 또는 생성자를 매개변수의 개수나 타입을 다르게 정의하는 것
    • 오버라이딩 (Overriding) : 부모 클래스의 메서드와 같은 이름, 매개변수를 재정의 하는 것

 

장점과 단점

장점

  • 코드가 간결해진다
  • 객체는 계속 활용할 수 있기 때문에 코드의 재사용성이 높아진다
  • 객체 단위로 작성되면 기능에 대한 오류가 발생했을 때 개발자는 디버깅이 쉽고 유지보수가 용이하다
  • 사용자는 내부적으로 데이터가 어떻게 동작하는지 몰라도 기능을 사용할 수 있기 때문에 생산성이 높아진다
  • 강한 응집력과 약한 결합력을 통해 소프트웨어의 질을 향상시킨다

단점

  • 처리 시간이 비교적 오래 걸린다
  • 프로그램을 설계할 때 많은 고민과 시간을 투자해야 한다

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함