Step-by-Step
[CS] 객체지향 프로그래밍 본문
클래스
- 객체를 만들어내기 위한 틀
- 변수와 메소드의 집합
객체
- 클래스가 실제로 구현된 인스턴스
인스턴스
- 클래스를 바탕으로 구현된 구체적인 실체
- 객체를 소프트웨어에 실체화 한 것
- 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것
더보기
클래스의 타입으로 선언되었을 때 객체라 부르고,
객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부름
객체지향 프로그래밍
- Object Oriented Programming - OOP
- 객체들의 상호작용으로 서술하는 프로그래밍 기법
- 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 만들고, 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 기법
객체지향 프로그래밍의 장단점
- 장점
- 코드 재사용 용이 (상속)
- 유지보수의 용이성 (캡슐화)
- 대형 프로젝트 적합 (클래스 모듈화)
- 단점
- 개발 속도 느림 (객체 처리에 정확한 이해 필요)
- 실행 속도 느림 (객체 지향 언어의 특성)
- 복잡도 상승 (다중상속과 같은 이유)
객체지향의 4가지 특징
- 추상화
- 객체의 공통적인 속성과 기능을 추출하여 정의하는 것
- 클래스를 공통적인 특성(변수, 메소드)들로 묶어서 표현하는 것
- 캡슐화
- 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만듦
- 데이터와 코드 형태를 외부로부터 은닉화 시킴
- 상속화
- 부모 클래스에 정의된 변수 및 메서드를 자식 클래스에서 상속받아 사용하는 것
- 다형성
- 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 것
- 오버라이딩과 오버로딩에 의한 것
객체지향 원칙 5가지 (SOLID)
- 단일 책임의 원칙
- SRP - Single Responsibility Principle
- 한 클래스는 하나의 책임만 가져야 함
- 개방 폐쇄 원칙
- OCP - Open Closed Principle
- 기능 확장엔 열려있고, 변경에는 닫혀있으야 함
- 리스코프 치환 원칙
- LSP - Liskov's Substitution Principle
- 프로그램 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 함
- 인터페이스 분리 원칙
- ISP - Interface Segregation Principle
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 나음
- 의존관계 역전 원칙
- 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