Programing

객체 지향 프로그래밍 (OOP) 기술을 배우거나 개선하기위한 좋은 도전 / 과제 / 연습

lottogame 2020. 10. 20. 07:13
반응형

객체 지향 프로그래밍 (OOP) 기술을 배우거나 개선하기위한 좋은 도전 / 과제 / 연습


객체 지향 프로그래밍 기술을 향상시키기위한 좋은 도전은 무엇입니까?

이 여론 조사의 배경은 OOP 학습에 유용한 연습 문제를 제공하는 것입니다.

문제는 가능한 한 언어에 구애받지 않고 특정 라이브러리를 거의 또는 전혀 사용하지 않거나 가장 일반적인 라이브러리 만 필요로해야합니다. 답변 당 하나의 도전 만 포함하도록하여 투표가 해당 도전의 장점에만 해당되도록하십시오. 필요한 기술 수준과 이것이 유용한 운동 인 이유의 근거가 표시되면 좋을 것입니다.

그런 다음 문제에 대한 솔루션을 "방법 ..."질문에 대한 답변으로 게시하고 여기에서 연결할 수 있습니다.

예를 들면 :

  • 과제-후입 선출 스택 구현
  • 기술 수준-초급
  • 근거-객체를 참조하는 방법에 대한 경험을 제공합니다.

객체 지향 디자인의 기술 구축 은 유용 할 수있는 무료 책입니다. 설명은 다음과 같습니다

"이 책의 목적은 OO 디자인에서 흥미롭고 적당히 복잡한 일련의 연습을 제공함으로써 초보 디자이너에게 도움을주기위한 것입니다. 또한이 책은 관리자가 OO 소프트웨어 개발 프로세스에 대한 수준의 편안함을 개발하는 데 도움이 될 수 있습니다. 빌드는 사소한 것보다 한 걸음 더 나아가 신중한 생각과 디자인이 필요합니다. 또한 응용 프로그램은 본질적으로 레크리에이션이기 때문에 흥미롭고 매력적입니다.이 책을 통해 독자는 프로젝트 마감일 전에 OO 디자인의 프로세스와 아티팩트를 탐색 할 수 있습니다. 좋은 디자인을 불가능하게 만듭니다. "


어려운 프로그램 을 처음부터 작성하십시오 . 몇 명 (약 5 명, 가능해야 함)을 사용하도록하십시오. 변경 요청에 응답합니다.

프로그램의 디자인을 조정하십시오. 작게 시작하여 성장하는 것을 지켜보십시오. 이 성장을 관리하십시오. 이것은 어렵다. 또한 버그를 수정하고 시간이 지남에 따라 유지 관리해야하는데 이는 저에게 매우 귀중한 교훈이었습니다.


과제 : 선택한 언어로 선택한 웹 사이트 / 서비스 API 용 래퍼를 작성하세요.이 래퍼는 아직 존재하지 않습니다 (예 : C #로 작성된 ZenDesk API 래퍼). 다른 사용자가 사용할 수 있도록 래퍼를 오픈 소스로 해제합니다.

기술 수준 : 초급에서 중급

근거 : 타사 웹 서비스 API를 의미있는 개체 / 클래스 집합으로 외삽하여 선택한 언어로 해당 API를 더 쉽게 재사용하는 방법을 배우기 위해.


기초를 배운 후에는 "Gang of four"디자인 패턴 책을 공부하십시오.

http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1221488916&sr=8-1

이것은 고전적이며 일반적인 코딩 문제에 대한 우아한 솔루션을 설계하기 위해 OO를 사용하는 방법을 이해하려는 코더라면 반드시 읽어야합니다.


절차 적 스타일로 작성된 코드를 가져 와서 OOP 기반 솔루션으로 변환 해보십시오. 프로세스 중에 리팩토링 및 디자인 패턴에 대한 책을 참조하십시오. 제 친구는 객체 지향 개념을 정확히 이런 방식으로 이해하는 데 큰 진전을 이룰 수있었습니다. 다른 것과 마찬가지로 이것은 모든 사람에게 작동하지 않을 수 있습니다.


CRC 카드 는 좋은 OO 디자인을 배우고, 가르치고, 구축하는 데 매우 효과적이라는 것을 알았습니다 .


확실히 좋은 도전은 "처음부터 시작"할당보다 접근성이 떨어지지 만 상속을 사용하지 않거나 상속을 많이 사용하지 않는 기존 코드를 리팩터링하는 것입니다. 리팩토링 프로세스는 가장 최근 프로젝트에서 확실히 그랬던 것처럼 oop의 많은 이점과 문제점을 드러 낼 것입니다. 또한 저만의 객체 지향 디자인을 만든 과거 프로젝트보다 개념을 더 잘 이해하도록했습니다.


주어진 과제는 "OOP"와는 거의 관련이 없으며 등급을 매기는 방식에 더 가깝습니다.

리팩토링 책 3 장을보고 솔루션에 나쁜 코드 냄새가 없는지 확인합니다. 또는 더 중요한 것은 적용되는 항목을 검토하는 것입니다.

가장 중요한 것은 setter 및 getter (클래스의 값에 대해 작동하고 클래스가 자체 값에 대해 작동하도록 요청하지 않음을 나타냄)가 있는지 확인하거나 Liskov Substitution Principle을 적용하지 않고 "extends"를 사용하는 것입니다. 그.

참고 URL : https://stackoverflow.com/questions/60109/good-challenges-tasks-exercises-for-learning-or-improving-object-oriented-progra

반응형