Old Posts/OOP

00. 알고리즘 문제로 OOP 이해하기.md

bactoria 2018. 2. 27. 18:04
README

자바로 문제 풀면서 OOP 정복 가즈아!


안녕하세요. 컴퓨터공학과 학생입니다.


저는 2018년 1월부터 Java로 백준 알고리즘 문제를 풀어왔는데 절차지향적인 사고방식으로 코드를 짜왔습니다.


알고리즘 문제를 풀다보면 절차지향으로 짜도 별 문제가 없었죠 ? (오히려 더 빠릅니다.)


허나, 몇 달이 지나서 문제의 Output이 바뀌어 내 코드를 수정해야 한다면 어떨까요 ?


객체지향프로그래밍(OOP)에 대해 공부하던 중에 어떻게하면 몸소 느낄 수 있을까 생각하다가


이왕 알고리즘 문제 푸는거 객체지향적인 코드로 짜보자 하는 생각이 들었습니다.


어떻게 하면 객체지향스럽게 적용할 지 고민하며 제 나름대로 코드를 짜보고


기록하여 올리는 공간입니다.


저와 같이 알고리즘 문제를 객체지향적으로 구현 하고 싶은분들은


문제를 같이 풀면서 비교하면 좋을 것 같습니다.


잘못된 부분이나 피드백은 언제나 지적해주세요! 특히 네이밍이 너무 어렵네요ㅠ


issue나 pr해주시면 저에게 정말 큰 도움이 된답니다.



객체지향 4특성


Step1. 추상화 (Abstraction)


Step2. 캡슐화 (Encapsulation)


Step3. 상속성 (Inheritance)


Step4. 다형성 (Polymorphism)



객체지향 5원칙(SOLID Principle)


Step1. 단일 책임 원칙(Single Responsiility Principle)


Step2. 개방 - 폐쇄 원칙(Open-Closed Principle)


Step3. 리스코프 치환 원칙(Liskov Substitution Principle)


Step4. 인터페이스 분리 원칙(Interface Segregation Principle)


Step5. 의존 역전 원칙(Dependency Inversion Principle)