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


81

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

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

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

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

예를 들면 :

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

우리 대학에는 필수 운동이있었습니다. 자바 미디어 플레이어를 작성하여 mp3 파일을 재생합니다. 여러 주에 걸친 과제 였기 때문에 초보자에게 좋았습니다. 각각에 대한 샘플 솔루션과 단위 테스트가 포함 된 8 개의 챕터가 있습니다. 코드의 ~ 70 %가 항상 주어졌고 장당 매우 구체적인 작업이 수십 개있었습니다. 간단한 UI, 파일 액세스, 설정 저장, 상속 및 다형성 사용, 자체 클래스 추가, 분명히 루프 및 조건. 시작하고 싶은 모든 것이있었습니다. 슬프게도 저작권 보호입니다. -__- 작업을 마친 후에도 내 기능을 추가했습니다.
Heinzlmaen

답변:


43

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

[ 편집 : 원본 책은 비 트로트 된 것으로 보이지만 (모든 형식에 대해 404) 인터넷 아카이브에는 HTML , PDFMOBI 버전이 있습니다 .]

설명은 다음과 같습니다.

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


1
나는 이것을 두 번째로-정말 좋은 책.
Nikola Anusev

14

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

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


7
+1 변경 요청에 응답
bhathiya-perera 2014-10-22

9

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

기술 수준 : 초급에서 중급

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


4

기초를 배운 후에는 "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를 사용하는 방법을 이해하려는 코더라면 반드시 읽어야합니다.


7
GOF를 고려할 때 "디자인 패턴의 선두 주자"는 훨씬 더 즐겁게 읽을 수 있습니다.
CaptainHastings

2
GOF는 궁극이며 우리는 그것에 대해 두려워해서는 안됩니다. 잠자리에 들기 전에 매일 읽으십시오.
kta 2014 년

3

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


2

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


1

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


0

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.