본문 바로가기

프로그래밍 언어/설계 원칙 & 디자인 패턴5

저는 SOLID가 처음이라니까요? (2편) 안녕하세요! 조엘입니다! "처음이라니까요" 시리즈 네 번째 주자 바로 SOLID 원칙입니다. 👏👏 SOLID가 왜 중요한 개념인지 같이 공부해보도록 해요! 저번 1편에 이어 2편에서는 LSP / ISP / DIP를 다루도록 하겠습니다! *** Liskov Substitution Principle (리스코프 치환 원칙) *** 세 번째 원칙은 LSP, 리스코프 치환 원칙이에요. 정의는 다음과 같아요. "상위 타입의 객체를 하위 타입의 객체로 치환해도, 상위 타입을 사용하는 프로그램은 정상으로 작동해야 한다." LSP는 앞서 살펴본 OCP를 지원하는 원칙이에요. LSP는 다형성에 대한 원칙이거든요. LSP를 준수한 프로그램에서는 상위 타입의 객체를 사용하는 기존의 코드에, 하위 타입의 객체를 대입해도 프로그.. 2021. 4. 15.
저는 SOLID가 처음이라니까요? (1편) 안녕하세요! 조엘입니다! "처음이라니까요" 시리즈 네 번째 주자 바로 SOLID 원칙입니다. 🎺🎺 SOLID가 왜 중요한 개념인지 같이 공부해보도록 해요! 다룰 내용이 많아서, 1편에서 SRP / OCP를, 2편에서 LSP / ISP / DIP를 다루도록 하겠습니다! *** SOLID 원칙 *** 객체 지향 프로그래밍은 각자의 책임들을 완수하는 객체들을 만들고, 이를 협력시켜 큰 문제들을 풀게 했어요. 독립성과 신뢰성이 높은 객체들로 조합된 프로그램은 절차 지향적으로 작성된 프로그램에 비해 유지 보수와 확장에 유리하다고 해요. 하지만 이론은 알아도 막상 코드를 "객체 지향적"으로 작성하려면 머리가 굳어버리는데요! 대충 클래스 정의하고, 대충 조합해서, 뚝딱뚝딱 굴러가게만 짠 코드는 결코 유지 보수와 확장.. 2021. 4. 14.
저는 상태 패턴이 처음이라니까요? 안녕하세요! 조엘입니다! "처음이라니까요" 시리즈 세 번째 주자 바로 상태 패턴입니다. 상태 패턴을 제가 어떻게 이해하고, 정리하고, 적용했는지 알려드릴게요! 💪 피드백 환영입니다! 댓글 달아주세요 :) *** 전략 패턴 복습 *** 앞선 포스팅에서 전략 패턴에 대해서 알아봤어요! - 전략 패턴 포스팅 : papimon.tistory.com/75 전략 패턴은 객체 간의 커뮤니케이션에 유연성을 부여하는 Behavioral 패턴 중에 하나였어요. 전략 패턴은 특정 전략(알고리즘)이 어플리케이션의 동작에 필요하며, 사용자의 요청 등 상황에 따라 특정 전략(알고리즘)이 런타임에 바뀌어야 할 때 유용한 디자인 패턴이에요. 여러 전략들을 추상화한 interface를 만들었고, 실제 전략들을 구체화시킨 class들을.. 2021. 3. 19.
저는 전략 패턴이 처음이라니까요? 안녕하세요! 조엘입니다! "처음이라니까요" 시리즈 두 번째 주자 바로 전략 패턴입니다. 자랑은 아니지만, 사실 디자인 패턴이라는 걸 우테코 들어와서 처음 들어봤어요. 😂 그래서 전략 패턴 하나를 배우고 익히는데 시간이 오래 걸렸던 것 같아요. 그러면 전략 패턴을 제가 어떻게 이해하고, 정리하고, 적용했는지 알려드릴게요! 💪 피드백 환영입니다! 댓글 달아주세요 :) *** 디자인 패턴 *** 위키피디아에서 정의하는 디자인 패턴의 정의는 다음과 같아요. 디자인 패턴은 소프트웨어 설계에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 솔루션이다. 디자인 패턴은 프로그래머가 어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는 데에 쓰이는 형식화된 가장 좋은 관행이다. 가장 유명한 GoF.. 2021. 3. 13.
저는 객체 지향이 처음이라니까요? 안녕하세요! 조엘입니다! "처음이라니까요" 시리즈 첫 주자 바로 객체 지향입니다. 솔직히 말하면, 객체 지향이랑은 초면은 아닙니다. 분명히 학교에서 배우긴 했어요. 클래스는 뭐다, 붕어빵 붕어빵 틀, 다형성, 캡슐화 등등... (학교 커리큘럼이 이상해져서 정말 맛만 보고 끝났지만 😒) 근데 막상 객체 지향에서 중요한 건 이런 용어들이 아니더라고요. 객체 지향에서 뭐가 중요한지 하나씩 알아봅시다 :) 틀린 내용이 있을 수 있습니다! 알려주세요! 댓글 환영합니다 😁 *** 정의 *** 기존 학교 과제나 알고리즘 테스트에서 작성한 코드들을 생각해보면, 데이터에 필요한 절차를 거쳐 원하는 결과로 가공되도록 코드를 작성했어요. 지금까지 제가 이러한 코딩 방식을 가지고 불편해하지 않았던 이유는 한 번 짜고 평생 볼.. 2021. 2. 22.
반응형