OOP(Obejct Oriented Programming)
Object(객체)들의 상호작용(주고받기, 저장, 처리 등)으로 프로그램 로직을 구성하는 프로그래밍 패러다임이다.
🔍프로그래밍 패러다임은 프로그래머가 프로그래밍의 관점을 갖게 하고 코드를 어떻게 작성할지 결정해주는 역할을 한다.
캡슐화
특정한 하나의 목적을 위해 데이터나 메소드를 하나로 묶는 것.
은닉화
내부구조는 private
하게 감춰도구 외부에서는 public
으로 공개한다.
🔍내부 구조는 감추고 모듈 내부의 응집도를 높이며 외부로부터 노출을 최소화하여 모듈간의 결합도를 떨어뜨리는 것.
상속
기존 메소드와 변수를 물려받되, 필요기능을 추가하거나 재정의 하는 것.
추상화
공통의 속성이나 기능을 묶어 이름을 붙이는 것으로 OOP에서 클래스를 정의하는 것을 말한다.
다형성
하나의 변수명이 상황에 따라 다른 의미로 해석.
동적바인딩
runtime에 값에 따라 변수 데이터 타입, 호출될 함수가 결정된다.
SOLID(객체지향 5대원칙)
SRP(단일책임원칙)
: 한 클래스가 하나의 책임만 가짐OCP(개방-폐쇄원칙)
: 확장에는 열려있고 / 변경에는 닫혀 있음 & 다형성 활용LSP(리스코프 치환 원칙)
: 프로그램의 객체가 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 함. 상위타입을 상속해서 재정의 했을 때 프로그램이 깨지지 않아야 한다.ISP(인터페이스 분리 원칙)
: 클라이언트가 자신이 사용하지 않는 메소드에 의존 관계를 맺으면 안됨.DIP(의존관계 역전 원칙)
: 추상적인 것은 자신보다 구체적이거나 변화하기 쉬운 것에 의존해서는 안 됨. 구현 클래스에 의존하지 않고 인터페이스에 의존해야 한다.
프로세스 vs 스레드
- 프로세스 : 실행 중인 프로그램을 말함.
- 스레드 : 프로세스 내 실행 단위
🔍
멀티프로세스로 처리 가능한 것을 멀티 스레드로 처리하는 이유
는 프로세스보다 공유하는 통신 비용이 적고 자원을 할당하는 시스템 콜이 감소하여 효율적이기 때문이다.
🔍 병렬프로그래밍 : 하나의 프로그램을 여러 개로 쪼개 분할하고 작은 작업을 동시에 실행하여 더 빠르게 처리 가능 하도록 하는