Ruby/Myślenie zorientowane obiektowo: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje) |
Szymon wro (dyskusja | edycje) |
||
Linia 10:
Programowanie zorientowane obiektowo pozwala nam przekazywać większość przyziemnych i monotonnych czynności logicznych do samych danych; zmienia to nasze pojmowanie danych z pasywnych na aktywne.
Innymi słowy:
* Przestajemy traktować każdy kawałek danych jak skrzynkę z otwartym wiekiem, do której możemy sięgać bądź wkładać przedmioty.
* Zaczynamy traktować każdy kawałek danych jak działającą maszynę z zamkniętą pokrywą oraz dobrze oznakowanymi przełącznikami i potencjometrami.
To co nazwaliśmy wyżej "maszyną" może mieć bardzo proste lub bardzo złożone wnętrze. Nie możemy tego określić patrząc z zewnątrz, jak i nie pozwalamy sobie grzebać w środku (za wyjątkiem sytuacji, gdy jesteśmy absolutnie pewnie, że coś jest nie tak z jej projektem), więc jedyne czego się od nas wymaga to przekręcanie przełączników i odczytywanie potencjometrów by wpływać na dane. Jak już maszyna jest zbudowana nie chcemy sobie dalej zaprzątać głowy tym jak ona działa.
Możesz sądzić że po prostu robimy sobie więcej pracy, ale to podejście to dobra robota w celu chronienia wszelkich rzeczy przed błędami.
The same problem would be attacked from a much different angle in an object-oriented context. The first thing a programmer asks when designing the tripmeter is not "which of the familiar data types comes closest to resembling this thing?" but "how exactly is this thing supposed to act?" The difference winds up being a profound one. It is necessary to spend a little bit of time deciding exactly what an odometer is for, and how the outside world expects to interact with it. We decide to build a little machine with controls that allow us to increment it, reset it, read its value, and nothing else.
Linia 29:
It's worth noting here that the use of an OO language will not enforce proper OO design. Indeed it is possible in any language to write code that is unclear, sloppy, ill-conceived, buggy, and wobbly all over. What ruby does for you (as opposed, especially, to C++) is to make the practice of OO programming feel natural enough that even when you are working on a small scale you don't feel a necessity to resort to ugly code to save effort. We will be discussing the ways in which ruby accomplishes that admirable goal as this guide progresses; the next topic will be the "switches and dials" (object methods) and from there we'll move on to the "factories" (classes). Are you still with us?
{{Przypisy}}
<noinclude>
{{ProstaNawigacja|spis=Ruby|poprzart=Ruby/Iteratory|poprz=Iteratory|nastart=Ruby/Metody|nast=Metody}}
|