일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 그래프(Graph)
- 그리디 알고리즘(Greedy Algorithm)
- 동적 프로그래밍(Dynamic Programming)
- 백준 2812번
- 백준 9012번
- 백준 1948번
- 위상 정렬(Topology Sort)
- 분할 정복(Divide and Conquer)
- 다익스트라 알고리즘(Dijkstra Algorithm)
- 백준 18352번
- 플로이드 워셜 알고리즘(Floyd-Warshall Algorithm)
- BFS
- 이분 탐색(Binary Search)
- 백준 1707번
- DFS & BFS
- 알고리즘 개념
- 백준 2504번
- 이분 그래프(Bipartite Graph)
- 위상 정렬(Topological Sort)
- DFS
- 백준 21606번
- DFS(Depth First Search)
- BFS(Breadth First Search)
- 스택(Stack)
- 백준 17608번
- 큐(Queue)
- 백준 2261번
- 백준 10000번
- 트리(Tree)
- 백준 2493번
- Today
- Total
Always Be Wise
객체 지향 프로그래밍이란? 본문
객체 지향 프로그래밍이란?
객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임의 하나입니다.
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위,
즉, 객체들의 모임으로 파악하고자 하는 것입니다.
클래스와 인스턴스를 이용하여 코드를 재수정 없이 재활용하는 캡슐화,
부모 클래스의 특성과 기능 중 필요한 것을 이어 받아 사용하는 상속,
하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 다형성 등이 특징이라고 할 수 있습니다.
객체 지향 프로그래밍은 SOLID 원칙을 따릅니다.
단일 책임 원칙(Single Responsibility Principle)
모든 클래스는 단 하나의 책임을 가져야 한다는 원칙입니다.
개방-폐쇄 원칙(Open Closed Principle)
모든 소프트웨어 구성 요소는 확장에 대해서는 개방되어있지만, 수정에 대해서는 폐쇄되어있다는 원칙입니다.
리스코프 치환 법칙(Liskov Substitusion Principle)
부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 잘 작동해야 하는 원칙입니다.
인터페이스 분리 원칙(Interface Segregation Principle)
클라이언트에서 사용하지 않는 메서드는 사용해선 안된다는 원칙입니다.
의존성 역전 법칙(Dependency Inversion Principle)
상위 클래스는 하위 클래스에 의존해서는 안된다는 법칙이다.
네임 맹글링이란(Name Mangling)?
변수/함수의 이름을 다른 이름으로 바꾸는 것을 네임 맹글링이라 합니다.
파이썬에서 맹글링은 크게 2가지 상황에서 사용할 수 있습니다.
첫 번째는 클래스의 속성값을 외부에서 접근하기 힘들게 할 때(private화),
두 번째는 하위 클래스가 상위 클래스의 속성을 오버라이딩 하는 것을 막을때 입니다.
오버로딩(Overloading) vs 오버라이딩(Overriding)
한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면,
같은 이름을 사용해서 메소드를 정의하는 것을 오버로딩이라 합니다.
부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의 하는 것을 오버라이딩이라고 합니다.
상속받은 메소드를 그대로 사용할 수도 있지만, 자식 클래스에서 상황에 맞게 변경해야하는 경우에 사용합니다.
'기술 관련 정리' 카테고리의 다른 글
가상메모리란? (0) | 2022.04.03 |
---|---|
레드 블랙 트리(Red Black Tree)란? (0) | 2022.03.31 |
HTTP vs HTTPS (0) | 2022.03.29 |
HTTP 2.0의 특성은? (0) | 2022.03.29 |
HTTP 1.0 vs HTTP 1.1 (0) | 2022.03.29 |