학생들이 OOP를 배울 때 자주 묻는 질문은 무엇입니까?

Jan 19 2021

이 질문 읽기 소프트웨어 복잡성을 관리하기 위해 정말 OO 언어가 필요합니까? SE 사이트 중 하나와 객체 지향 개념을 가르치는 내 자신의 경험, 예를 들어 객체 지향 개념과 프로그래밍 (파이썬)을 가르치는 실제 실제 사례를 통해 학생들이 OOP를 처음 배울 때 물어볼 수있는 일반적인 질문이 무엇인지 궁금해하게되었습니다 .

예를 들어 저자가 묻는 질문에서

저는 초보 CS 학생입니다 ... 첫 학기에 캡슐화, 데이터 숨김, 모듈화와 같은 OOP 개념을 소개 받았습니다.

그러나 모듈화, 캡슐화, 데이터 숨김 등과 같은 복잡성을 관리하는 데 사용되는 모든 원칙은 절차 언어로 매우 쉽게 구현할 수 있다고 생각합니다. 그렇다면 복잡성 없이도 복잡성을 관리 할 수 ​​있다면 왜 정말 OOP일까요?

나는 또한 나 자신의 투쟁이 있음을 인정해야한다. 예를 들어 나는이 질문을했다 . OOP가 명사의 중요성을 과도 하게 강조 하여 그 사이트에서도 행동 / 동사를 덜 중요한 위치에 두는가? (아무도이 질문을 한 학생은 없다). 내 질문이 닫히고 2 개의 삭제 표를 받았지만 항상 내 관심사입니다.

자바 스크립트에 대한 경험이 있고 OOP를 배우고 싶어하는 내 학생이나 동료라면, 항상 momentjs 를 date-fns 와 비교하도록하겠습니다 . 둘 다 날짜를 다루고 비슷한 기능을 제공합니다. 둘 다 좋은 일을하지만 momentjs는 OOP 라이브러리입니다. date-fns는 함수 라이브러리입니다.

제 목적은 그들이 일을하는 데는 여러 가지 방법이 있다는 것을 이해하게하는 것입니다.

그렇다면 학생들이 자주 묻는 질문은 무엇입니까?

답변

4 Qiulang Jan 20 2021 at 11:01

나는 softwareengineering.stackexchange.comstackoverflow.com 에서 객체 지향 태그가 지정된 대부분의 투표 된 질문을 읽었습니다 . 소프트웨어 엔지니어링 사이트에 대한 몇 가지 질문은 OOP를 배울 때 매우 일반적인 반면 스택 오버플로에 대한 질문은 전문가가 더 많이 묻는 실용적인 프로그래밍 질문과 더 관련이 있습니다.

그래서 소프트웨어 엔지니어링 사이트에서 몇 가지 질문을 나열했습니다.

  1. 프로그램을 여러 클래스로 분할하는 것이 좋은 이유는 무엇입니까? . 이 질문은 실제로 고등학생이 물었습니다.
  2. OOP의 객체는 엔티티를 나타내야합니까? . 제 학생들이이 질문을합니다.
  3. 절차 적 프로그래밍에 비해 객체 지향 프로그래밍의 이점은 무엇입니까? 이것은 내 질문의 "소프트웨어 복잡성 관리"질문과 다소 관련이 있으며 quora에서 질문 한 또 다른 흥미로운 질문을 동료와 논의합니다. C가 객체 지향 언어가 아닐 때 Linux는 어떻게 그렇게 큰 코드 기반을 유지합니까? 코드 기반이 모두 엉망입니까?
  4. OOP는 코드 재사용 약속을 이행합니까? 코드 재사용을 위해 어떤 대안이 있습니까? 학생들이이 질문을할지 확신이 서지 않고 저도 질문에 두 배가 있습니다.
  5. 객체 지향 코드를 작성할 때 항상 디자인 패턴을 따라야합니까? . 이 사이트에는 또한 디자인 패턴에 대한 질문이 있습니다. 디자인 패턴을 가르치지 않는 컴퓨터 과학 과정은 얼마나 나쁜가요?
  6. “말하고 묻지마”가 어떻게 좋은 OO로 간주되는지에 대한 설명 . 코딩 경험을 쌓은 후에야 질문을하거나 감사 할 수 있습니다. 그러나 그것은 좋은 것입니다.
  7. 함수가 복잡하고 변수가 많은 경우 클래스를 만들어야합니까? 한 가지 대답은 학생들이 "클래스를 사용하되 객체를 구성하고 메서드를 호출하고 결과를 반환하는 독립 함수를 제공합니다. 내부적으로 실제로 사용하는 클래스 공개 기능의 구현 세부 사항이됩니다. "

Quora에는 또한 사람들이 OOP를 처음 배울 때 물어볼 흥미로운 질문이 있습니다. 여기에 몇 가지를 나열합니다.

  1. (프로그래머의 입장에있는) 누구든지 OOP없이 현대 기술 산업 (소프트웨어 또는 소프트웨어 없음)에서 살아남을 수 있습니까?
  2. 소프트웨어 개발자는 얼마나 자주 OOP를 사용합니까? . Kurt Guntheroth의 한 가지 대답은 흥미 롭습니다. "약 1,000 줄이 넘는 프로그램을 작성할 때마다 OOP를 사용해야합니다. 1000 줄입니까? 그게 왜 ...?"
  3. 객체 지향 프로그래밍이 적합하지 않은 경우는 언제입니까?

다른 답변을 얻을 수 있기를 바랍니다.

1 Eddie Feb 06 2021 at 17:23

이것은 정말 좋은 질문입니다! 귀하의 답변은 많은 근거를 다루고 있습니다.

나는 이러한 질문에 동기를 부여 할 수있는 것에 대해 반성하고 싶습니다.

제 경험상, 여정 초기에 OOP를 접하는 학습자는 다음과 같은 몇 가지 다른 도전과 씨름해야합니다.

  1. 그들은 OOP가 해결하는 문제를 아직 경험하지 못했습니다.
  2. 그들은 발견되기를 기다리는 모든 프로그래밍 문제에 대한 완벽한 솔루션이 있다고 믿습니다.

이로 인해 전체적인 질문, 혼란 및 일부 경우 불안정성이 발생합니다.