기술면접을 위해 기초 CS에 대한 복습중이다.
공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다.
내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의!
OOP
- 장점: 재사용성, 생산성↑, 유지보수 용이, 디버깅 용이, 대형 프로젝트 함에 있어 분담 용이
- 5가지 키워드: 클래스&객체, 추상화, 캡슐화, 상속, 다형성
- 추상화: 공통의 속성이나 기능을 묶어 이름을 붙이는 것. Class 정의
- 다형성: 오버라이딩, 오버로딩(매개 변수 수나 타입을 달리하는 것)
- 객체지향 설계원칙(SOLID)
- Single Responsible Principle: 단일 책임 원칙. 클래스의 단 하나의 책임
- Open-Closed Principle: 확장성에 대해선 개방, 변경 가능성에 대해서는 패쇄
- Liskov Substitution Principle: 상위 타입 객체를 하위 타입으로 치환해도 상위 타입을 사용하는 프로그램은 정상 동작
- Interface Segregation Principle: 인터페이스는 클라이언트 기준으로 분리
- Dependency Inversion Principle: 고수준 모듈은 저수준 모듈을 의존해선 안됨
Interface & Abstract
인터페이스란?
일종의 추상 클래스
다중 상속이 가능한 다른 클래스 작성의 기본 틀
오직 추상메소드와 상수만 포함 가능
장점: 다중 상속, 표준화 가능, 클래스마다 독립적인 프로그래밍 가능
// interface 선언 interface [___] { public abstract [___ ____()]; } // 상속 받을 클래스 선언 Class [___] implements [___] { public [____] { // ... } }
추상클래스란?
- 하나 이상의 추상메소드가 있는 클래스
- 추상메소드는 자식클래스에서 반드시 오버라이딩 해야만 사용 가능(다형성)
abstract class [___] { abstract [___]; }
Interface와 추상클래스의 차이
- 인터페이스는 공통적인 것을 장착하는 느낌이라면, 추상클래스는 상속해주는 부모클래스
- 여러 인터페이스를 가질 순 있지만, 여러 추상클래스에서 상속 받는 건 불가능 (다중상속 vs 단일상속)
- 인터페이스는 모든 메소드가 추상 메소드이지만, 추상클래스는 일부만 추상 메소드
- 위의 이유 때문에 추상클래스가 만약 다중 상속을 한다면 모호성이 생기기 때문에 단일상속만 가능하고, 인터페이스는 전부 추상메소드라 가능하다.
- 둘 다 객체를 생성할 수 없다.
클래스와 객체
- 객체란? (Object, instance)
- 상태(state, field)와 행동(method)으로 구체화한 형태
- 독립된 메모리공간(heap영역)에 자신만의 field를 가짐(but 메소드는 code영역에 있고 공유함)
- 클래스란?
- 객체를 정의하는 틀/설계도
'Study note > CS' 카테고리의 다른 글
외국계 시험 대비 Summary (0) | 2024.04.12 |
---|---|
DS - Data Structure (0) | 2024.04.12 |
디자인 패턴 2 (0) | 2024.04.12 |
디자인 패턴 1 (0) | 2024.04.12 |
네트워크 (0) | 2024.04.12 |