2013-01-16 2 views
1

나는 OOP에서는 파이썬을 사용하여 스스로 가르쳤다.객체 지향 프로그래밍 실습 - 객체의 개념/실체

내 관심사는 개념이나 엔티티를 객체로 분리하는 것입니다.

예를 들어, 나는 라스베리 파이에 연결된 신호등 시스템을 제어하는 ​​코드를 작성했습니다.

시스템에는 다음이 포함

  • 자동차가 신호등 (빨강, 노랑, 녹색)을 출발했다.
  • 교차를 요청하는 버튼입니다.
  • 그리고 녹색과 붉은 빛이 때

이 지금은 하나 개의 전체 클래스로 내 코드를 모델링 결국 십자가에 보행자를 말할 수 있습니다. 객체 내부의 메소드가 객체의 다른 메소드를 호출하는 곳. 예 : 개체가 초기화 될 때 initialize 메서드는 "button for wait"메서드를 호출합니다.이 메서드는 버튼 누름이 감지되면 메서드가 "light through sequence"메서드를 호출합니다.

이것은 나쁜 습관입니까? 각 개념/개체가 별도의 클래스/개체 여야합니다. 신호등 개체, 단추 개체, 보행자 빛 개체?

질문의 공개를 위해 죄송합니다.

도움 주셔서 감사합니다.

+1

codereview : http://codereview.stackexchange.com/에 코드와 함께이 응답을 게시해야합니다. 일반적으로 다른 개체로 나누어 말해야합니다. – lolopop

+0

다른 개체 (개체)와 상호 작용하기위한 메서드와 초기화 또는 설정에 사용되는 메서드를 최소한 구별해야합니다. 인터페이스에 대해 조금 생각하고 물건을 자연스럽게 깨뜨리려고 시도하십시오. 그러나 그럼에도 불구하고 간단한 문제를 과장하지 않고 천천히 객체 지향 관행으로 진화하려고 노력한다. – Lemonade

+1

하나의 거대한 클래스를 갖는 것은 OO 외관 아래에 절차 코드를 작성하는 것입니다. 따라서 문제를 작은 개체로 분해해야합니다. – StoryTeller

답변

1

현재 당신이 무엇을 Single Responsibility Principle을 (를) 위반 했습니까? 기본적으로 수업은 너무 많이하고 있습니다.

는 횡단을 시작 요청할 자동차 trafficlights, 보행자 신호등 및 버튼에 대한 별도의 클래스를 가지고 : 당신이 할 수있는 일

는 다음과 같은 것입니다.

그런 다음 버튼 클래스를 보행자 라이트 클래스에 삽입 할 수 있습니다. 보행자 클래스뿐만 아니라 보행자 클래스도 모두 "제어"/ "관리"클래스에 주입하여 클래스가 조명을 관리하는 데 사용됩니다.

예를 들어 교통 신호등에 실제 조명을 주입하여 더 이상 추상화 할 수도 있습니다.

다른 SOLID principles에 대해 읽어 볼 수도 있습니다.

+0

답장을 보내 주셔서 감사합니다. 솔리드 원칙은 정말 재미 있습니다. 아무 생각도 아직 주입이 무엇인지 또는 어떻게 작동하는지. – Xerphiel

+1

@Cornucopia 다음을 참조하십시오 : http://misko.hevery.com/2008/11/11/clean-code-talks-dependency-injection/ :) – PeeHaa

+0

많은 도움을 주셔서 감사합니다. 링크와 자신이 많이 가르쳐주었습니다. – Xerphiel