Created
January 12, 2015 17:06
-
-
Save evertheylen/f507cf1217efbd4e6ce9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Stel u voor; een simpele tabel van pagina's. | |
+-----+-----------------------------------------+ | |
| nr | tekst | | |
+=====+=========================================+ | |
| 1 | "pagina 1 tekst...." | | |
+-----+-----------------------------------------+ | |
| 2 | "pagina 2 tekst...." | | |
+-----+-----------------------------------------+ | |
| 5 | "pagina 5 tekst...." | | |
+-----+-----------------------------------------+ | |
| 10 | "pagina 10 tekst...." | | |
+-----+-----------------------------------------+ | |
We steken deze data in een datastructuur, genaamd TABEL. | |
Elke pagina heeft twee attributen (you know, object-georienteerd programmeren): | |
class Pagina: | |
def __init__(self, nr, tekst): | |
self.nr = nr | |
self.tekst = tekst | |
Dit kan je ook zien in de tabel vanboven. | |
Stel nu dat we de volledige pagina op nummer 5 willen weten. In de code doen we dit: | |
TABEL.retrieve(5) | |
Visueel kan je het bezien als dit: | |
+-----+ | |
| 5 | ? | |
+-----+ | |
+-----+-----------------------------------------+ | |
| nr | tekst | | |
+=====+=========================================+ | |
| 1 | "pagina 1 tekst...." | | |
+-----+-----------------------------------------+ | |
| 2 | "pagina 2 tekst...." | | |
+-----+-----------------------------------------+ | |
| 5 | "pagina 5 tekst...." | | |
+-----+-----------------------------------------+ | |
| 10 | "pagina 10 tekst...." | | |
+-----+-----------------------------------------+ | |
De tabelimplementatie moet dan weten welke van de 2 attributes hij moet gebruiken om te vergelijken met de searchkey (5). | |
Dit wordt gegeven door 'de' self.attribute (aka Name_Of_Attribute_Used_As_Searchkey). In ons voorbeeld zal dit gelijk zijn aan 'nr'. | |
In een (domme) tabelimplementatie zal het programma dan (bijvoorbeeld) elk mogelijk object afgaan, en vergelijken of de gegeven searchkey overeenkomt met de key van het object. Code: | |
def retrieve(self, searchkey): | |
for object in self.underlying_array: # als voorbeeld | |
if object.__dict__[ self.attribute ] == searchkey: | |
return object | |
return None # niets gevonden | |
Dit stuk code kunnen we ook visueel voorstellen: 'object.__dict__[ self.attribute ] == searchkey' | |
+-----+ | |
searchkey = | 5 | | |
+-----+ | |
+-----+-----------------------------------------+ | | |
| nr | tekst | | | |
+=====+=========================================+ | | |
| 1 | "pagina 1 tekst...." | \|/ | |
+-----+-----------------------------------------+ ' | |
| +-----+ +-----+ | |
\_____________________________________________________________\ | 1 | == | 5 | | |
(geselecteerd door __dict__[self.attribute] / +-----+ +-----+ | |
= "nr" ( --> duidelijk False) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment