Step-by-Step

[CS] 객체지향 프로그래밍 본문

CS공부/기본기술

[CS] 객체지향 프로그래밍

희주(KHJ) 2023. 11. 4. 15:58

클래스

  • 객체를 만들어내기 위한 틀
  • 변수와 메소드의 집합

 

객체

  • 클래스가 실제로 구현된 인스턴스

 

인스턴스

  • 클래스를 바탕으로 구현된 구체적인 실체
  • 객체를 소프트웨어에 실체화 한 것
  • 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것

 

더보기

클래스의 타입으로 선언되었을 때 객체라 부르고, 

객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부름

 

 

객체지향 프로그래밍

  • Object Oriented Programming - OOP
  • 객체들의 상호작용으로 서술하는 프로그래밍 기법
  • 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 만들고, 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 기법 

 

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

  1. 장점
    • 코드 재사용 용이 (상속)
    • 유지보수의 용이성 (캡슐화)
    • 대형 프로젝트 적합 (클래스 모듈화)
  2. 단점
    • 개발 속도 느림 (객체 처리에 정확한 이해 필요)
    • 실행 속도 느림 (객체 지향 언어의 특성)
    • 복잡도 상승 (다중상속과 같은 이유)

 

 

객체지향의 4가지 특징

  1. 추상화
    • 객체의 공통적인 속성과 기능을 추출하여 정의하는 것
    • 클래스를 공통적인 특성(변수, 메소드)들로 묶어서 표현하는 것
  2. 캡슐화
    • 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만듦
    • 데이터와 코드 형태를 외부로부터 은닉화 시킴
  3. 상속화
    • 부모 클래스에 정의된 변수 및 메서드를 자식 클래스에서 상속받아 사용하는 것
  4. 다형성
    • 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 것
    • 오버라이딩과 오버로딩에 의한 것

 

객체지향 원칙 5가지 (SOLID)

  1. 단일 책임의 원칙
    • SRP - Single Responsibility Principle
    • 한 클래스는 하나의 책임만 가져야 함
  2. 개방 폐쇄 원칙
    • OCP - Open Closed Principle
    • 기능 확장엔 열려있고, 변경에는 닫혀있으야 함
  3. 리스코프 치환 원칙
    • LSP - Liskov's Substitution Principle
    • 프로그램 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 함
  4. 인터페이스 분리 원칙
    • ISP - Interface Segregation Principle
    • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 나음
  5. 의존관계 역전 원칙
    • DIP - Dependency Inversion Principle
    • 추상화에 의존하며, 구체화에 의존하면 안됨

 

 

 

오버라이딩 VS 오버로딩

  • 오버라이딩 : 부모클래스의 메소드와 같은 이름, 매개변수를 재정의한 것
  • 오버로딩 : 같은 함수명을 가지되, 매개변수 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출되는 것

 

 

getter과 setter 사용이유

  • 멤버변수를 private으로 설정
  • getter, setter를 이용하여 접근하기 때문에, 매개변수와 같이 올바르지 않은 입력에 대해 사전에 처리할 수 있도록 함

'CS공부 > 기본기술' 카테고리의 다른 글

[CS] 운영체제  (0) 2023.11.15
[CS] 메모리  (1) 2023.11.13
[CS] 데이터베이스  (1) 2023.11.04
Comments