Typowe pytania, które uczniowie mogą zadawać, gdy uczą się OOP?

Jan 19 2021

Czytanie tego pytania Czy naprawdę potrzebujemy języków OO do zarządzania złożonością oprogramowania? na jednej z witryn SE i moje własne doświadczenia w nauczaniu koncepcji obiektowych, np. Niektóre praktyczne przykłady nauczania pojęć zorientowanych obiektowo i programowania (w Pythonie) sprawiły, że zastanawiałem się, jakie są typowe pytania, które mogą zadawać uczniowie, gdy po raz pierwszy uczą się OOP ?

Na przykład w tym pytaniu autor zadał:

Jestem początkującym studentem CS ... W pierwszym semestrze poznaliśmy koncepcje OOP, takie jak hermetyzacja, ukrywanie danych, modułowość ...

Ale myślę, że wszystkie zasady używane do zarządzania złożonością, takie jak modułowość, enkapsulacja, ukrywanie danych itd., Mogą być bardzo łatwo zaimplementowane w językach proceduralnych. Dlaczego więc naprawdę OOP, skoro możemy bez niego zarządzać złożonością?

Muszę też przyznać, że mam własną walkę, np. Zadałem to pytanie Czy OOP przesadnie podkreśla znaczenie rzeczownika i tym samym umieszcza akcję / czasownik w pozycji mniej ważnej? również na tej stronie (jednak żaden student nie zadał mi tego pytania). Moje pytanie zostało zamknięte i otrzymałem nawet 2 głosy za usunięcie, ale to zawsze jest moje zmartwienie.

Jeśli moi uczniowie lub moi koledzy, którzy mają doświadczenie z javascriptem i lubią uczyć się OOP, zawsze pozwolę im porównać momentjs z date-fns , zarówno zajmują się datą, jak i zapewniają podobne funkcje, oba wykonują dobrą robotę, ale momentjs jest biblioteką OOP a date-fns to biblioteka funkcji.

Moim celem jest pozwolić im zrozumieć, że jest więcej niż jeden sposób na zrobienie czegoś.

Więc jakie są typowe pytania, które zadają twoi uczniowie?

Odpowiedzi

4 Qiulang Jan 20 2021 at 11:01

Przeczytałem większość głosowanych pytań oznaczonych jako zorientowane obiektowo na softwareengineering.stackexchange.com i stackoverflow.com . Wydaje mi się, że niektóre pytania w witrynie softwareengineering są dość powszechne podczas uczenia się OOP, podczas gdy pytania dotyczące stackoverflow są bardziej związane z praktycznymi pytaniami programistycznymi, które są częściej zadawane przez profesjonalistów.

Dlatego wymieniłem kilka pytań z witryny softwareengineering,

  1. Dlaczego warto podzielić program na kilka klas? . To pytanie rzeczywiście zadał licealista.
  2. Czy obiekty w OOP muszą reprezentować byt? . Moi studenci zadają mi to pytanie.
  3. Jaka jest przewaga programowania obiektowego nad programowaniem proceduralnym? to jest w pewnym stopniu związane z pytaniem „zarządzanie złożonością oprogramowania” w moim pytaniu i omawiam z kolegami inne interesujące pytanie, które zostało zadane na quorze. Jak Linux utrzymuje tak dużą bazę kodu, kiedy C nie jest językiem zorientowanym obiektowo? Czy baza kodu jest popsuta?
  4. Czy OOP spełnia obietnicę ponownego wykorzystania kodu? Jakie są alternatywy umożliwiające ponowne wykorzystanie kodu? Nie jestem pewien, czy uczniowie będą zadawać to pytanie, a ja też mam na nie swój podwójny odpowiednik.
  5. Czy pisząc kod zorientowany obiektowo, powinienem zawsze kierować się wzorcem projektowym? . Ta strona zawiera również pytanie dotyczące wzorców projektowych, jak zły jest kurs informatyki, który nie uczy wzorców projektowych?
  6. Wyjaśnienie, w jaki sposób „Powiedz, nie pytaj” jest uważane za dobre OO . Dopiero gdy zdobędą pewne doświadczenie w kodowaniu, mogą zadać / docenić pytanie. Ale to jest dobre.
  7. Czy powinienem utworzyć klasę, jeśli moja funkcja jest złożona i zawiera wiele zmiennych? Jedną z odpowiedzi była również moja rekomendacja dla moich uczniów, kiedy mają takie pytanie: „Użyj klasy, ale także zapewnij funkcję wolnostojącą, która tylko konstruuje obiekt, wywołuje metodę i zwraca wynik, klasę, której używasz wewnętrznie naprawdę staje się tylko szczegółem implementacji Twojej funkcji publicznej ”

Quora ma również kilka interesujących pytań, które moim zdaniem ludzie będą zadawać, kiedy po raz pierwszy nauczą się OOP, kilka z nich wymieniam tutaj:

  1. Czy ktokolwiek (na stanowisku programisty) może przetrwać w branży nowoczesnych technologii (oprogramowanie lub brak oprogramowania) bez OOP?
  2. Jak często programiści używają OOP? . Jedna z odpowiedzi Kurta Guntherotha jest interesująca: „Za każdym razem, gdy piszesz program dłuższy niż około 1000 linii, powinieneś użyć OOP. 1000 linii? Dlaczego to…?”
  3. Kiedy programowanie obiektowe nie jest dobrym rozwiązaniem?

Mam nadzieję, że uda mi się uzyskać inne odpowiedzi.

1 Eddie Feb 06 2021 at 17:23

To naprawdę fajne pytanie! Twoja odpowiedź również obejmuje wiele kwestii.

Chciałbym zaproponować refleksję na temat tego, co może motywować te pytania.

Z mojego doświadczenia wynika, że ​​uczniowie, którzy napotykają OOP na wczesnym etapie swojej podróży, muszą zmagać się z kilkoma różnymi wyzwaniami, w tym:

  1. Nie doświadczyli jeszcze problemu / ów, które rozwiązuje OOP.
  2. Uważają, że istnieje doskonałe rozwiązanie wszystkich czekających na odkrycie wyzwań programistycznych.

Powoduje to cały ładunek pytań, nieporozumień i, w niektórych przypadkach, niepewność.