/srv/irclogs.ubuntu.com/2011/04/09/#ubuntu-nl-mwanzo-klas.txt

leoquantsst08:25
leoquantzo17:54
leoquantde negende cursus17:54
commandolinegoed, we gaan wel beginnen.18:32
commandolinewelkom bij de -volgens mijn administratie- negende pythonles!18:33
commandolinegoed, laten we beginnen met het huiswerk18:33
commandolineten eerste had ik gevraagd of iedereen http://paste.ubuntu.com/588654/ begreep18:33
commandolinehet belangrijkste verschil met eerdere programma's is dat hier het 'hoofdprogramma' in een class is verpakt18:34
commandolinehet programma wordt uitgevoerd door de voer_uit()-method aan te roepen18:34
commandolineen dat gebeurt onderin:18:35
commandolineif __name__ == "__main__":18:35
commandolineadresboekProgramma = AdresboekProgramma()18:35
commandolineadresboekProgramma.voer_uit()18:35
commandolinede rest is wel besproken van dat voorbeeld eerder, dus ik neem aan dat jullie daar allemaal wel uitkomen.18:35
commandolineok, dan gaan we over naar de tweede opdracht: galgje!18:36
commandolineten eerste: heeft iemand daar vragen over?18:36
commandolineok, ik zal jullie eerst even een relatief simpele uitwerking laten zien18:37
commandolineen daarna een waar kunstwerk gemaakt door CasW :)18:37
commandolinehttp://paste.ubuntu.com/591810/18:37
commandolinejullie zien bij die link eerst de Word-class van vorige week18:38
commandolinedaarna wordt een woord gekozen om te raden18:38
commandolinedat in de code zetten ('hardcoden') is natuurlijk niet zo slim18:39
commandolinemaar het is wel simpel18:39
commandolinehet alternatief zou zijn om de gebruiker te vragen een woord in te vullen.18:39
commandolinegoed, we gebruiken hier in het programma een list met daarin allemaal strings van 1 teken18:40
commandolinestandaard zijn die tekens '_'18:40
commandolinemaar gaandeweg veranderen ze in letters die geraden zijn18:40
commandolinehet aanmaken van die list gebeurt op de regels 39-4118:41
commandolinedaarna start het spel18:41
commandoline(de while loop)18:41
commandolineer wordt altijd eerst de uitvoer opgebouwd:18:41
commandolineeerst worden alle letters weergeven18:41
commandolineen daarna wordt de galg getekend, als er een bepaald aantal fouten is gemaakt18:42
commandolinetext += " _________     \n" if woord.aantal_fouten > 0 else "\n"18:42
commandolinedaar staat hetzelfde als:18:42
commandolineif woord.aantal_fouten > 0:18:42
commandoline    += " _________     \n"18:42
commandolineelse:18:42
commandoline    text += "\n"18:42
commandolineen ik ben het woord 'text' voor die eerste keer vergeten18:43
commandoline(19:42:39) FOAD: Je bouwt dus elke keer "text" opnieuw op, ok.18:43
CasWJa18:44
CasW(Sorry voor de late reactie)18:44
commandolineok, als dat gebeurd is, wordt gekeken of er al teveel fouten zijn gemaakt.18:44
commandoline(19:44:42) hannie: Ik begrijp de 3 streepjes in het midden niet. Dat zijn toch 3 fouten18:45
CasWWelke 3 streepjes bedoel je precies?18:45
CasW(19:45:21) hannie: armpje, buikje, armpje18:45
CasWJa, het galgje wordt per 'lijn' getekend18:46
CasW*nee dus18:46
CasWDat is dus een fout18:46
commandolinede galg wordt hier van boven naar onder getekend, draai het programma maar eens, dan zie je het vanzelf18:46
commandolineok, er wordt daarna dus nagegaan of er al teveel fouten (>6) zijn gemaakt18:47
commandolinezoja, dan heb je verloren en stopt de while loop18:47
commandolinedaarna wordt een menu weergeven18:47
commandolinedat afhankelijk van de keuze v/d gebruiker een letter laat raden, een woord, of het spel stopt18:48
commandoline(ja, je kan stoppen als je dik aan het verliezen bent :P)18:48
commandolinemaar goed, die opties worden gewoon afgehandeld met behulp van de class18:49
commandolinelocaties = woord.raad_letter(letter)18:49
commandoline for locatie in locaties:18:49
commandoline geraden[locatie[0]] = locatie[1]18:49
commandolineis nog wel interessant18:49
commandolinedaar gebruiken we de eigenschap dat raad_letter het volgende teruggaf:18:50
commandoline[positie, letter]18:50
commandolineok, is dit voorbeeld dan duidelijk?18:50
commandolinemooi, zoals zolangzamerhand wel duidelijk is heeft CasW aan een andere uitwerking gewerkt.18:51
commandolinehttp://www.technotaal.nl/qhangman/qhangman.tar.gz18:51
commandolinelet wel: je hebt het pakket 'python-qt4' nodig18:51
CasWOmdat ik hem nog niet heb verwerkt tot een .deb, moet je die dus zelf installeren18:52
CasW(.deb komt er wel nog aan)18:52
commandolinemaar dat is niet zo moeilijk:18:52
commandolinegewoon het bestand uitpakken en hangman.py starten18:52
CasWDat is dus het spel starten18:53
CasWNiet PyQT installeren, dat is gewoon sudo apt-get install python-qt418:53
commandolineok, jullie kunnen het rustig bekijken, in de tussentijd ga ik verder18:54
commandolineverdere uitleg over QHangman volgt in -mwanzo18:54
commandolineok, ik wil jullie vandaag nog wat nieuws uitleggen.18:55
commandolinehet gaat om een onderdeel van OOP:18:55
commandolineinheritance (overerving)18:56
commandolineje kan het gebruiken om classes uit te breiden.18:56
commandolinebijvoorbeeld:18:56
commandolineje hebt een class die bijna alles doet wat je wilt18:57
commandolinemaar één method ontbreekt18:57
commandolinebijv. bij een list, je zou kunnen denken aan 'randomItem()'18:58
commandolineje kan dan de complete list-class herschrijven18:58
commandolinemaar dat is veel te veel werk18:58
commandolinein plaats daarvan kan je ervoor kiezen om een nieuwe class te maken die overerft van 'list'18:59
commandolinegoed, ander voorbeeld:19:00
commandolineje hebt een voertuig19:00
commandolineieder voertuig kan bijv. bewegen19:00
commandolineals je nou zowel een fiets als een auto zou willen programmeren19:00
commandolinedan kan je ervoor kiezen om de functionaliteit die het bewegen regelt in een class Voertuig te stoppen19:01
commandolinewaarvan zowel Auto als Fiets overerven, zodat je geen dubbele code schrijft.19:01
commandolineduidelijk tot zover?19:01
commandolinehttp://typewith.me/ep/pad/view/ro.W-w-q$ggIak/latest19:02
commandolinegoed, laten we dat voorbeeld eens in code omzetten19:03
commandolineten eerste maken we een class aan19:03
commandolineaangezien een voertuig kan bewegen, wil ik dat het ergens staat zodra het geïnitialiseerd is.19:04
commandolinedaarom heb ik de mogelijkheid gegeven om een x en y coördinaat te geven.19:05
commandolinegoed, zoals ik al eerder zei, ieder voertuig kan bewegen.19:06
commandolinedus we kunnen hem een 'vooruit'-method geven.19:07
commandolineok, ik houd het even simpel en laat eigenschappen als 'richting' even weg.19:07
commandolinevooruit doet niks anders dan een bepaalde afstand afleggen, opgeteld bij laten we zeggen x.19:08
CasW(20:09:10) FOAD: Wat doet aantal_vakjes nu?19:09
CasWDat zegt hoeveel vakjes hij in de x-richting moet gaan19:09
commandolinescherp, FOAD19:09
CasW*hoeveel eenheden19:09
commandolineik maak een foutje :(19:09
CasWCorrectie, nú zegt die dat19:09
commandolinegoed, genoeg over een voertuig19:10
commandolinelaten we nu een fiets gaan maken.19:10
commandolineok, het idee is hier dat je een versnelling kan opgeven aan een fiets19:12
commandolineen dat de viets afhankelijk van die versnelling een verschillend aantal hokjes opschuift bij 1x trappen.19:12
commandolinebegrijpt iedereen ongeveer wat hier gebeurd?19:12
commandoline*gebeurt19:12
CasW*fiets19:12
commandolinehmm, ik ben niet helemaal wakker geloof ik :P19:13
leoquantgaat goed hor!19:13
leoquanto19:13
commandolineok, volgende voertuig, idd19:14
commandoline(reactie op: (20:13:46) FOAD: En nu komt er een ander voertuig?)19:14
commandolinegoed, een auto moet zich aan een snelheidslimiet houden.19:14
commandolinedat betekent dat als vooruit() wordt aangeroepen op een auto, dat die niet sneller dan de maximumsnelheid gaat, ondanks het aantal_vakjes dat is opgegeven.19:16
commandoline(20:16:02) FOAD: Zou fiets.versnelling niet een default waarde moeten hebben?19:16
CasWJe kunt inderdaad zeggen dat 'ie een default waarde heeft, dan doe je:19:16
CasWdef __init__(self, versnelling = 1)19:16
CasWBijvoorbeeld19:17
commandolineFOAD: duidelijk?19:17
commandolineok, verder met de auto19:17
commandolinehoewel, ik ben nog wat bij de Fiets vergeten19:17
commandolinede __init__ daarvan moet de __init__ van Voertuig aanroepen19:18
commandolineanders wordt self.x niet op een bepaalde waarde geset.19:18
commandoline(20:18:41) exalt: moet het gewicht / bouw / materiaal keuze van de fiets niet ook iets invloed hebben over de snelheden?19:18
commandoline(20:18:59) CasW: Dan moet je nog weer meer toevoegen aan die fiets19:19
CasWMaar dan heb je alweer een ander soort fiets19:19
CasWDus dan doe je bijvoorbeeld class Mountainbike(Fiets)19:19
commandolinedat is inderdaad een mogelijkheid19:19
commandolinedaarnaast kun je eigenlijk nooit alle eigenschappen van een object overnemen19:20
commandolinesommige zijn ook niet relevant19:20
commandolineje implementeert alleen wat je nodig hebt.19:20
commandolineduidelijk, exalt?19:20
commandolinein de tussentijd: ik heb zoals jullie hebben gezien op regel 22 gezorgd dat de __init__ van Voertuig aangeroepen.19:22
commandolinewaardoor de code weer werkt.19:22
commandolineok, nu de auto implementeren19:22
commandolineok, duidelijk wat ik tot nu toe allemaal heb getypt?19:25
CasWself.vooruit19:25
commandolineen ook hoe je het moet gebruiken?19:25
CasWNiet Voertuig.vooruit19:25
commandolineCasW: nee, want dan roept hij zichzelf aan19:25
commandoline(20:25:42) FOAD: Ja.  Ik moet het nog in detail bestuderen, maar dat inheritance concept is leuk hoor.19:26
commandolinehet is een leuk concept, maar zorg wel dat je het alleen toepast als het echt nuttig is19:26
CasWEn bij Fiets dan? ;)19:26
commandolineCasW: daar roept de method 'trap' de method 'vooruit' aan19:26
commandolinein dat geval wordt de method niet opnieuw geimplementeerd19:27
CasWOch ja, nu zie ik het pas, excuses19:27
commandolineinheritance gebruiken om hele abstracte objecten te maken die amper wat doen op zichzelf heeft niet altijd evenveel nut.19:27
commandolineok, verder nog vragen?19:28
commandolinegoed, tijd voor het huiswerk voor de volgende keer dan19:28
commandoline-- installeer: pyqt4 (python library) en laby (programmeerspelletje)19:29
commandoline--- sudo apt-get install sudo apt-get install python-qt4 laby19:29
commandoline-- schrijf de class die beschreven wordt bij deze link, op de plek van het commentaar:19:29
commandoline--- http://paste.ubuntu.com/591811/19:29
commandoline-- kijk hoe ver je kan komen bij het spel 'laby' (selecteer als programmeertaal Python). (Toepassingen > Spelletjes > Logica > Laby)19:30
commandoline(20:30:24) CasW: Eenmaal sudo apt-get install19:30
commandoline(20:30:28) CasW: Niet tweemaal19:30
commandolinesudo apt-get install python-qt4 laby19:30
commandolinewordt het dan19:30
commandolinegoed, succes allemaal19:30
commandolineCasW, StefandeVries (neem ik aan) en ik zijn vaak in -mwanzo of een ander ubuntukanaal om vragen te beantwoorden19:31
commandolineen ik blijf nu ook bereikbaar voor vragen19:31
commandolineoja, je mag proberen om de classes die we hebben gemaakt te gebruiken19:32
commandolinemocht je dat willen (en dan zie je direct of er nog fouten in zitten, ik heb dit nl. uit het hoofd getypt)19:32
commandolinetot volgende week!19:32
commandoline(dan trouwens waarschijnlijk vanaf de Ubuntu Jam in Burgum!)19:32
leoquantcommandoline, en CasW bedankt weer!19:32
commandolinegraag gedaan leoquant, jij ook bedankt weer :)19:33
=== ChanServ changed the topic of #Ubuntu-nl-mwanzo-klas to: Zaterdag 16-04-11 19.30-20.30 workshop Python (10): #Ubuntu-nl-mwanzo-klas| Info: http://wiki.ubuntu-nl.org/community/mwanzo/Workshop/BasiscursusPython| Leiding: commandoline en stefandevries| Logs op http://irclogs.ubuntu.com |Let ook op eventueel andere workshops| Alle cursisten join ook: #ubuntu-nl-mwanzo, daar kun je vragen stellen aan de workshopleiders.

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!