Programutvecklingsteknik

Lärare: Hans Jernberg , Pär Eriksson
Kursen behandlar grundläggande kunskaper och färdigheter i programmering. Kursen behandlar begrepp inom objektorienterad programmering (OOP), grundläggande språkelement och programsatser. Vikt läggs vid klasser och objekt som används vid uppbyggnad av objektorienterade program. Vidare behandlas hur datamängder läses, lagras och manipuleras i datastrukturer och filer.

Fö 1 Dictionaries Vad är en en dictionary (dict)? Vad är key-value par? När och varför använda dictionaries? Nyckelkoncept samt kodexempel för vanliga dictionary metoder som get(), keys() items() Hur spara ner dict. Hur läsa upp dict från json fil.
Fö 2 Dictionaries - Billager app Hur skapa dict för att hantera bilar på vårt lager
Fö 3 Dictionaries - Bilager app Fortsättning hur använda dict för att hantera bilar på vårt lager med CRUD (Create, Read, Update, Delete) operationer för att lägg till, söka, uppdatera och ta bort bildata.
Fö 4 Dictionaries - Lägg till Börjar med att skapa användarmenyn för CRUD operationer för vår billager app. Sen gör vi lägg till funktionaliteten.
Fö 5 Dictionaries - Ta bort Ta bort bil från dict baserat på dess regnummer.
Fö 6 Dictionaries - Visa alla bilar Visar alla bilar på lager.
Fö 8 Dictionaries - Spara dict till json fil Spara dict med bildata till json fil.
Fö 9 Dictionaries - Läsa upp data från json fil till dict Läsa upp bildata från json fil till Dictionary.
Fö 10 Set - Kort intro Kort intro till set data strukturen. Hur man skapar, lägger till, tar bort och loopar set data samt kollar om ett värde finns i ett set.
Fö 11 Set - Fortsättning Hur du jobbar med union of sets, intersection of sets, finding difference of Sets, finding subsets and supersets of sets
Fö 12 Set - Lottorader och dess extra nummer Visa hur man slumpar lottorad och dess extranummer så att det inte blir dubbletter.

Fö1 - Intro till klasser och objekt Vad är klass resp. objekt? Hur skapar man en klass med data och metoder? Hur instansierar man objekt ur klass för att anropa konstruktorer och metoder.
Fö2 Vad är OOP? Vad är en klass?
Fö3 - metoder, fält/attribut Vad är datahiding? Vad är ett objekt? Vad är attribut/fält resp. metod? Vad är skillnader mellan klass och objekt? Vad är en instans? Hur skapar man en klass? Vad är en konstruktor?
Fö4 - Klasser i moduler Vad är __init__ metoden? Hur anropas konstruktorn? Hur anropar man ett objekts metoder? Vad är skillnad mellan publika resp. privat attribut/fält? Hur skapar man klasser i modul? Visar exempel hur man skapar Coin klass för att kunna skapa instanser/objekt ur denna klass för att anrop dess metoder.
Fö5 Vad är och hur används __str__() metoden. Hur kastar en metod ett fel när den inte kan utföra sin uppgift?
Fö6 Vad är instanser? Vad är data/attribut/variabel?
Fö7 Vad är accessor resp mutator metoder? Hur skickar man med ett objekt som argument till funktion eller metod? Visar Car klass exemplet.
Fö8 - UML klass diagram Tekniker för att finna klasser dessa attribut och metoder. Vad UML klassdiagram? Hur skapa UML klasser diagram? Online verktyg för att skapa UML-klassdiagram.
Fö9 - OOAD Enkel OOAD för shoppingsite. Ur use cases finna klasser, dess attribut, metoder och relationer.
Fö10 - Repository designpattern Vad är Repository Desing Pattern? Nyckelkoncept, fördelar och nackdelar. Hur man skapar upp en Repository klass med CRUD operationer.
Fö11 - Car Repository CRUD operationer mot textfil för att hantera data om bilar.
Fö12 - Visa alla bilar get_all() metoden hämtar bildata från textfilen för att skapa upp en lista av bilobjekt. Läs upp bildata från textfilen rad för rad, skapa ett bilobjekt baserat på data i raden, lägga det bil objektet till lista.
Fö13 - Lägg till ny bil add() metoden lägger till en ny bil mot textfilen. Först läggs bilobjekt till i listan, sen skrivs bildata till i slutet på textfilen.
Fö14 - Uppdatera bil update() metoden uppdaterar bilens data i textfilen. Loopa listan för finna matchning på regnummer, där matchning finns uppdateras det bilobjektet i listan. Sen skriver vi över hela filen med det data som finns nu i listan.
Fö15 - Ta bort bil delete() metoden ta bort bilen från textfilen. Loopa listan för att finna matchning på regnummer, där matchning finns tas bilobjekt bort ur listan. Sen skriver vi över hela filen med det data som finns nu i listan.
Fö16 - Serialisera och deserialisera pythonobjekt till och från fil Hur använda pickle modulen för serialisera och deserialisera pythonobjekt till och från fil. Vad är serialisering och deserialisering? Hur används pickle modulens dump() metod för serialisera objekt till fil samt load() method för deserialisera från fil till objekt.
Fö17 - CRUD operationer för att serialisera och deserialisera pythonobjekt Genomgång av CourseManager klassens metoder som har CRUD operationer som använder pickle funktionalitet för serialisera och deserialisera dictionary objekt till och från fil.

Vecka 51 det viktig denna vecka är att jobba med inlämningsuppgift 3 som har focus på kap 9 och 10. Du kan även börja kolla på GUI dvs kap 13. Se under vecka 52-02

Fö1 - Första GUI appen En app med GUI som innehåller ett fönster på vilken det ligger en knapp och en label. Appen visar hur många gånger man tryckt på knappen. Hur skapar man en gui app med ett fönster? Hur lägger men till knapp och label på fönster? Hur skapar man klick funktionalitet till knappen?
Fö2 - GUI:et som klass istället Hur gör man om tidigare GUI exempel från fö1 som klass istället? Dvs hur skapar man en klass där man lägger till knapp och label på fönster, hur skapar man klick funktionalitet till knappen?
Fö3 - Organisera i frames Organsiera dina GUI widgets/komponenter i frames. Hur skapar man två frames och lägger gui widgets i dem? Hur använderr man messageboxar?
Fö4 -Frames fortsättning Appen km to miles. Hur skapar man tre frames och lägger gui widgets i dem? Hur avsluta programmet via klickhändelse med root.destroy?
Fö5 - Radioknappar Skapa och välja från radioknappar. Hur skapar man händelsehanterare för radioknappar?
Fö6 - Checkboxar och listbox Skapa och välja från checkboxar samt visa det man valt i en listbox. Hur skapar man händelsehanterare för checkboxar?
Fö7 - Listboxar Flytta valt data mellan listBoxar. Hur väljer man flera frukter ur en listbox och flytta över dessa till annan listbox?
Fö 8 - Combobox Skapa och välja frukter ur en Combobox. Hur skapar man händelsehanterare för combboxen med hjälp av bind() metoden?
Fö9 - Intro CarGUIExcel en CRUD app med Treeview Skapa en gui app för att kunna gör CRUD operationer mot excel fil. Intro en till större GUI app, CarGUIExcel, där vi gör en sammanslagning av det vi lärt oss i kursen. Vi jobbar med flera egen klasser tex Car, CarRepositoryExcel, egen GUI klass där vi använder bla Treeview widget. Vi kommer att använda tredje parts biblioteket openpyxl för att kunna lägg till och hämta bil data från Excel fil.
Fö10 - Genomgång koden av hur GUI layouten är uppbyggt. Går igenom hur labels och entry textfälten läggs till i en Frame som har en grid struktur, samt hur treeview widgeten fylls med bildata från Excel.
Fö11 -Treeview händelsehantering Hur valt/klickat data ur treeview:n hamnar i entry-textfälten.
Fö12 - CarRepositoryExcel Går igenom hur vi byggt upp den del av CarRepositoryExcel klassen som hämtar bildata från Excel filen, dvs get_all method som använder Excel data om bilar för att fylla en lista med bil objekt som returneras. Den listan används sen för att fylla treeviewn.
Fö13 - Lägga till bil Går igenom hur du lägger till data om en bil till Excel och i treeviewn. Med hjälp av Händelsehanteraren för Add knappen skapas ett bil objekt upp baserat på data från entry textfälten. Det bil objektet läggs till på nästa tomma rad i Excel filen med hjälp av CarRepositoryExcel. Bilen läggs även till på första raden treeviewn.
Fö14 - Ta bort bil Här gås igenom hur du tar bort en bil från Excel filen. Med hjälp av händelsehanteraren för delete knappen och CarRespositoryExcels metod delete så loopar vi igenom Excel filen för att finna matchning på regnrummer och vid matchning så tas den raden bort ur excel filen.
Fö15 - Uppdatera bil Här gås igenom hur du uppdaterar en bils data i Excel filen. Med hjälp av händelsehanteraren för update knappen och CarRespositoryExcels metod update så loopar vi igenom Excel filen för att finna matchning på regnrummer och vid matchning så uppdateras den bilens data i Excel filen.

Vecka 2 Inlämningsuppgift 4 Om du läst, titta och gjort enligt ovan för kap 13 så är du väl förberedd att klara inlämningsuppgift 4 vecka 2. Men kunskaper från tidigare kapitel behövs också. Uppgifterna är i form av user stories som ska implementeras. Finns tillgänglig måndag vecka 2 kl. 08:00 i kursrummet med inlämning fredag vecka 2 kl. 23:59.