Programutvecklingsteknik

Välkommen till Pär Erikssons delar av kursen. Min enkla pedagogiska ide' och erfarenhet är att man lär sig mycket genom att lägga ner tid ca 2-4 timmar varje dag på att läsa i kursboken, titta på inspelningar samt skriva av befintlig kodexempel ur boken, inspelningar etc. Gör små förändringar i och av den för att sen testköra och se vad som händer. Ta paus varje timme. Ha en tänkt app för företag, klubb eller förening som du använder dina nya kunskaper på. Där du tänker, hur kan jag tillämpa det nya jag lärt mig på deras app? Jag kör ofta en tänkt liten bilfirma som jag applicerar nya koncept/kunskaper på och skriver koden för.

Veckoplanering - Vad titta på? Vad läsa? Vad göra?

Att läsa
  • Kap 9 och rubrikerna: Creating a Dictionary, Retrieving a Value from a Dictionary, Using the in and not in Operators to Test for a Value in a Dictionary
  • Kap 9 och rubrikerna: Adding Elements to an Existing Dictionary, Deleting Elements
  • Kap 9 och rubrikerna; Using for loop to iterate over Dictionary, Some Dictionary Methods
  • Kap 9 och rubrikerna: In spotlight: Storing Names and Birthdays in dictionary
  • Kap 9 och rubrikerna: Set, In the Spotlight Set Operations kolla snabbt igenom dessa avsnitt om Sets.
Att titta på
Övningar
  • Sist i kapitlet finns blåa/grön sidor, gör Review questions som multiple choice, true false samt short answers
  • Sist i kapitlet finns blåa/grön sidor, välj ur Programming excercises först nån uppgift som känns lätt, därefter en som är verkar rolig för att sist välja nån som känns utmanande.
  • Skapa en app för en tänkt fotbollsförening för att hantera dess medlemmar med hjälp av CRUD-operationer (Create, Read, Update, Delete) samt för att spara och hämta medlemsdata från en JSON-fil.
Inlämningar
  • Redan denna vecka kan ni kolla Inlämningsuppgift 3 om Dicts och klasser för att se vad du bör kunna för att klara den. Lämnas in fredag vecka 1 kl 17:00
  • Redan denna vecka kan ni kolla inlämningsuppgift 4 om GUI för att se vad du bör kunna för att klara den. Lämnas in fredag vecka 3 kl 17:00
Frågor och svar

Formulera ditt svar. Tryck sen på frågan för att se mitt svar. Jämför svaren. Vad för likheter och skillnander ser du? Vad saknas i mitt respektive ditt svar?

  • Vad är en dictionary i Python?
  • Hur skapar du en tom dictionary i Python?
  • Hur skapar du en dictionary med nyckel-värde par i Python, där ett minst ett nyckel-värde par använder tuple som värde?
  • Vad är skillnaden mellan en dictionary och en lista i Python?
  • Hur lägger du till ett nytt nyckel-värde-par i en dictionary?
  • Vad händer om du försöker lägga till en nyckel som redan finns i en dictionary?
  • Hur tar du bort ett nyckel-värde-par från en dictionary?
  • Kan en dictionary innehålla dubbletter av nycklar?
  • Hur kontrollerar du om en viss nyckel finns i en dictionary?
  • Vad är metoden keys() i en dictionary?
  • Hur får du en lista med alla värden i en dictionary?
  • Hur kan du loopa igenom en dictionary i Python?
  • Vad är en nästlad/inbäddad dictionary?
  • Kan du använda andra datatyper än strängar som nycklar i en dictionary?
  • Överkurs: Hur använder tuple som nycklar i en dictionary?
  • Vad är skillnaden mellan get() och [] för att hämta värden från en dictionary?
  • Vad är en dictionary comprehension i Python?

Att läsa
  • Kap 10 och rubrikerna: Procedural and Object-Oriented Programming, Classes, Bank account class .
  • Kap 10 och rubrikerna: Working with Instances, In the Spotlight Creating the CellPhone Class, In the Spotlight Storing Objects in a List, In the Spotlight Storing Objects in a Dictionary
  • Kap 10 och rubrikerna: Techniques for Designing Classes. Finding the Classes in a Problem, Identifying a Class’s Responsibilities.
Att titta på
  • Fö1 - Intro till klasser och objekt - Vad är en klass och vad är ett objekt? Hur skapar man en klass med attribut/data och metoder? Hur instansierar man objekt från en 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/inkapsling? 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 skillnaden mellan publika och privata attribut/fält? Hur skapar man klasser i en modul? Visar exempel på hur man skapar en Coin-klass för att kunna skapa instanser/objekt ur denna klass och anropa 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 en lista med bilobjekt. Läs bildata från textfilen rad för rad, skapa ett bilobjekt baserat på data i raden och lägg till bilobjektet i listan
  • Fö13 - Lägg till ny bil - add()-metoden lägger till en ny bil i textfilen. Först läggs bilobjektet till i listan, och sedan skrivs bildatan till i slutet av textfilen.
  • Fö14 - Uppdatera bil - update()-metoden uppdaterar bilens data i textfilen. Loopa igenom listan för att hitta en matchning på registreringsnumret. När en matchning hittas, uppdateras bilobjektet i listan. Därefter skriver vi över hela filen med den uppdaterade listan.
  • Fö15 - Ta bort bil - delete()-metoden tar bort bilen från textfilen. Loopa igenom listan för att hitta en matchning på registreringsnumret. När en matchning hittas, tas bilobjektet bort från listan. Därefter skriver vi över hela filen med den uppdaterade listan.
  • Fö16 - Serialisera och deserialisera pythonobjekt till och från fil - Hur använder man pickle-modulen för att serialisera och deserialisera Python-objekt till och från en fil? Vad är serialisering och deserialisering? Hur används pickle-modulens dump()-metod för att serialisera objekt till en fil och load()-metoden för att deserialisera från en fil till ett objekt?
  • Fö17 - CRUD operationer för att serialisera och deserialisera pythonobjekt - En genomgång av CourseManager-klassens metoder som har CRUD-operationer (Create, Read, Update, Delete) och använder pickle-funktionalitet för att serialisera och deserialisera dictionary-objekt till och från fil.
Övningar
  • Sist i kapitlet finns blåa/grön sidor, gör Review questions som multiple choice, true false samt short answers
  • Sist i kapitlet finns blåa/grön sidor, välj ur Programming excercises först någon uppgift som känns lätt, därefter en som är verkar rolig för att sist välja nån som känns utmanande.
  • Skapa en klass som representerar en produkt. Klassen ska ha attribut för produktens namn, pris, kategori och lagerstatus. Implementera CRUD-operationer (Create, Read, Update, Delete) för att hantera en produktkatalog.
  • Skapa en klass som representerar en kundvagn. Klassen ska kunna hantera produkter genom att lägga till, ta bort och visa produkter samt beräkna den totala kostnaden.
  • Skapa funktioner för att spara produktkatalogen och kundvagnen till en JSON-fil samt läsa data från JSON-filer för att återställa objekt med pickle.
Inlämningar
  • Redan denna vecka kan ni kolla Inlämningsuppgift 3 om Dicts och klasser för att se vad du bör kunna för att klara den. Lämnas in fredag vecka 1 kl 17:00
  • Redan denna vecka kan ni kolla inlämningsuppgift 4 om GUI för att se vad du bör kunna för att klara den. Lämnas in fredag vecka 3 kl 17:00
Frågor och svar

Formulera ditt svar. Tryck sen på frågan för att se mitt svar. Jämför svaren. Vad för likheter och skillnander ser du? Vad saknas i mitt respektive ditt svar?

  • Vad är en klass i Python?
  • Hur definierar du en klass i Python?
  • Vad är ett objekt i Python?
  • Är klass och objekt samma sak?
  • Vad är attribut i en Python-klass? Hur skapar du dem?
  • Vad är parametern self i Python-klassens metoder?
  • Hur skapar du en instans/objekt av en klass i Python?
  • Vad är metoden __init__ i en Python-klass?
  • Vad är inkapsling i Python klasser?
  • Vad är syftet med metoden __str__ i Python-klasser?
  • Vad är överskuggning av metoder i Python-klasser?

Att läsa
  • Kap 13 och rubrikerna: Graphical User Interfaces, Using the tkinter Module
  • Kap 13 och rubrikerna: Display Text with Label Widgets, Organizing Widgets with Frames
  • Kap 13 och rubrikerna: Button Widgets and Info Dialog Boxes, Getting Input with the Entry Widget
  • Kap 13 och rubrikerna: Using Labels as Output Fields, Radio Buttons and Check Buttons.
Att titta på
  • Fö1 - Första GUI appen - Visar en app med GUI som innehåller ett fönster med en knapp och en label. Appen visar hur många gånger man har tryckt på knappen. Hur skapar man en GUI-app med ett fönster? Hur lägger man till en knapp och en label i fönstret? Hur skapar man klick-funktionalitet för knappen?
  • Fö2 - GUI:et som klass istället - Hur gör man om tidigare GUI-exempel från Fö1 till en klass? Alltså, hur skapar man en klass där man lägger till en knapp och en label i ett fönster och hur skapar man klick-funktionalitet för knappen?
  • Fö3 - Organisera i frames - Organisera dina GUI-widgets/komponenter i ramar (frames). Hur skapar man två ramar och lägger GUI-widgets i dem? Hur använder man meddelanderutor (message boxes)?
  • Fö4 -Frames fortsättning - Appen 'km till miles'. Hur skapar man tre ramar (frames) och lägger GUI-widgets i dem? Hur avslutar man programmet med en klickhändelse som använder 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öra CRUD-operationer mot en Excel-fil. Introduktion till en större GUI-app, CarGUIExcel, där vi sammanfattar vad vi har lärt oss i kursen. Vi arbetar med flera egna klasser, till exempel Car, CarRepositoryExcel och en egen GUI-klass där vi använder bland annat Treeview-widgeten. Vi kommer att använda tredjepartsbiblioteket openpyxl för att kunna lägga till och hämta bildata från en 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 - Förklaring av hur man lägger till data om en bil i Excel och i Treeview. Med hjälp av händelsehanteraren för 'Lägg till'-knappen skapas ett bilobjekt baserat på data från inmatningsfälten. Bilobjektet läggs till på nästa lediga rad i Excel-filen med hjälp av CarRepositoryExcel. Bilen läggs även till på första raden i Treeview.
  • Fö14 - Ta bort bil - Här förklaras hur du tar bort en bil från Excel-filen. Med hjälp av händelsehanteraren för 'Radera'-knappen och CarRepositoryExcels metod delete loopar vi igenom Excel-filen för att hitta en matchning på registreringsnumret, och vid en matchning tas raden bort ur Excel-filen.
  • Fö15 - Uppdatera bil - Här förklaras hur du uppdaterar en bils data i Excel-filen. Med hjälp av händelsehanteraren för 'Uppdatera'-knappen och CarRepositoryExcels metod update loopar vi igenom Excel-filen för att hitta en matchning på registreringsnumret. Vid en matchning uppdateras bilens data i Excel-filen.
Övningar
  • Sist i kapitlet finns blåa/grön sidor, gör Review questions som multiple choice, true false samt short answers
  • Sist i kapitlet finns blåa/grön sidor, välj ur Programming excercises först nån uppgift som känns lätt, därefter en som är verkar rolig för att sist välja nån som känns utmanande.
  • Skapa en GUI-app för att hantera medlemmar i en tänkt fotbollsförening. Inkludera knappar, inmatningsfält (entry fields), etiketter (labels), Treeview, kombinationsrutor (comboboxar) etc. som stöder CRUD-operationer. Använd en egen Repository-klass för CRUD-operationer mot en Excel-fil.
Inlämningar
  • Kom ihåg inlämning av inlämningsuppgift 3 om Dicts och klasser. Lämnas in fredag vecka 1 kl 17:00
  • Kom ihåg inlämning av inlämningsuppgift 4 om GUI. Lämnas in fredag vecka 3 kl 17:00
Frågor och svar

Formulera ditt svar. Tryck sen på frågan för att se mitt svar. Jämför svaren. Vad för likheter och skillnander ser du? Vad saknas i mitt respektive ditt svar?

  • What is Tkinter in Python?
  • How do you import the Tkinter module in a Python script?
  • How do you create the main application window using Tkinter?
  • What method is used to run the Tkinter event loop?
  • How do you create a button widget in Tkinter?
  • How do you attach a function to a button click event in Tkinter?
  • How do you arrange widgets in a grid layout in Tkinter?

Att läsa
  • N/A
Att titta på
  • - N/A
Övningar
  • N/A
Inlämningar
  • Kom ihåg inlämningsuppgift 3 om Dicts och klasser. Lämnas in fredag vecka 1 kl 17:00
Frågor och svar

Formulera ditt svar. Tryck sen på frågan för att se mitt svar. Jämför svaren. Vad för likheter och skillnander ser du? Vad saknas i mitt respektive ditt svar?

  • N/A

Att läsa
  • N/A
Att titta på
  • - N/A
Övningar
  • N/A
Inlämningar
  • Vecka 3: Kom ihåg inlämningsuppgift 4 om GUI. Lämnas in fredag vecka 3 kl 17:00
  • Vecka 3: Kom ihåg att göra kursutvärdering i kursrummet.
Frågor och svar

Formulera ditt svar. Tryck sen på frågan för att se mitt svar. Jämför svaren. Vad för likheter och skillnander ser du? Vad saknas i mitt respektive ditt svar?

  • N/A

Hans Jernberg

hje@du.se

Pär Eriksson

pei@du.se

Dictionaries - dicts
Se spellista
Klasser och Objekt
Se spellista
GUI Grapical User Interface
Se spellista

Kursnamn: Programutvecklingsteknik

Program: Digitala tjänster – program för högskoleexamen

Beskrivning: 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.

Se kursplan