OOP

송민지·2023년 3월 27일
0

cs스터디

목록 보기
7/18

객체지향 프로그래밍

우리가 실생활에서 쓰는 모든 것을 객체라 하며 프로그램 구현에 필요한 객체를 파악하고 각가의 객체들의 역할이 무엇인지 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 말한다.
-> 즉 객체들의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그램밍의 패러다임

객체 지향 프로그램은 객체와 객체간의 연결로 되어있으며 각각의 객체 안에 자료구조와 알고리즘이 들어있다.

절차지향
프로그램을 기능중심으로 바라보는 방식으로 “ 무엇을 어떤 절차로 할 것인가?” 가 핵심이다
-> 어떤 기능을 어떤 순서로 처리하는가에 초점을 맞춘다

객체 지향
기능이 아닌 객체가 중심이 되며 “누가 어떤 일을 할 것인가” 가 핵심
-> 객체를 도출하고 각각의 역할을 정의해 나가는 것에 초점

절차 지향 vs 객체 지향

대형 프로그래밍인 경우 많은 기능을 수행하기 때문에 객체 지향이 적합
-> 객체 역할이 많아도, 많은 역할을 객체로 묶을 수 있기 때문

소형 프로그램은 작은 기능을 수반하기 때문에 절차지향이 적합
-> 작은 기능을 객체로 나눌 경우 복잡해 질수 있기 때문

객체지향 프로그래밍 특징
1. 추상화

  • 객체들의 공통적인 특징(기능, 속성)을 도출하는 것
  • 객체지향적 관점에서는 클래스를 정의하는 것을 추상화라고 할 수 있다.
    -> 객체의 공통적인 속상과 기능을 추출하여 정의하는 것
  1. 캡슐화

  • 실제로 구현되는 부분을 외부에 들어나지 않도록 하여 정보 은닉이 가능
  • 객체가 독릭접으로 역할을 할 수 있도록 데이터와 기능을 하나로 묶어 관리
  • 코드가 묶여있어서 오류가 없어 편함
  • 데이터를 보이지 않고 외부와 상호작용을 할 때는 메소드를 이용하여 통신한다 (보통 라이브러리를 만들어서 업그레이드에 사용)
  1. 상속성
  • 하나의 클래스가 가진 특징을 다른 클래스가 물려받는것
  • 이미 작성된 클래스를 받아서 새로운 클래스를 생성한다
  • 기존 코드를 재활용해서 사용하는 객체지향 방법의 중요한 기능중 하나
  1. 다향성
  • 약간 다른 방법으로 동작하는 함수를 호출하는 것
  • 동일한 명령의 해석을 연결된 객체에 의존한다
  • 오버라이딩과 오버 로딩이 가능
    • 오버라이딩 : 부모 클래스의 메소드와 같은 이름을 사용하며 매개변수도 같게하여 내부 소스를 재정의 하는 것

    • 오버로딩 : 같은 이름의 함수를 여러 개 정의한 후 매개변수를 다르게 하여 같은 이름을 경우에 따라 호출하며 사용

객체 간의 관계

  1. 집합 관계
    - 완성품 과 부품의 관계
  2. 사용 관계
    - 다른 객체의 필드를 읽고 변경하거나 매소드를 호출하는 관계

  3. 상속 관계
    - 부모 자식 관계

객체 지향 프로그래밍의 장점

소프트웨어의 생산성 향상

객체지향 프로그래밍은 다형성, 객체, 캡슐화 등 소프트웨어의 재사용을 지향
이미 만들어진 클래스를 상속받거나 객체를 가져다가 사용하거나 부분 수정을 통해 소프트웨어를 작성하는 부담을 대폭 줄일 수 있다.

  • 신뢰성 있는 소프트웨어를 손쉽게 작성할 수 있다
  • 코드를 재사용 하기 쉽다
  • 업그레이드와 디버깅이 쉽다

객체지향 프로그래밍의 단점

느린속도

객체지향 프로그래밍은 캡슐화와 격리구조 때문에 절차지향 프로그래밍과 비교하면 실행 속도가 느리다
모든것을 객체로 생각하기 때문에 추가적인 포인터 크기의 메모리와 연산에 대한 비용이 발생

  • 절차지향 프로그래밍에 비해 느린 속도
  • 필요한 메모리량의 증가

http://www.incodom.kr/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5
https://www.codestates.com/blog/content/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8A%B9%EC%A7%95

profile
기록하는 일상

0개의 댓글