Skapa former
Uppgiften går ut på att med hjälp av klasser, Flask, jinja2 och CSS, skapa former som visas i applikationen. Formerna ska skapas med hjälp av ett formulär och ritas ut i en annan route.
#Förkunskaper
Du har gått introduktionskursen i Python.
Du har läst artikeln “GET, POST i Flask”.
Du har läst artikeln “Klass relationer”.
#Introduktion
Vi ska leka med former. Vi ska utgå ifrån en basklass och skapa subklasser för olika former. Formerna ska skapas med hjälp av ett formulär och metoden POST. Om man anger fel dimensioner så ska formen inte ritas ut. Värden som ska anges är typ av objekt, bredd (px), höjd (px), positionen (x och y) där formen ska ritas ut samt en bakgrundsfärg. Till varje form ska det finnas en info-ruta där formens höjd, bredd och area ska skrivas ut. Utgå ifrån en basklass, Shape
, och skapa subklasserna Square
, Circle
och Triangle
.
#Krav
Börja med att skapa routes för uppgiften, en för att skapa former och en för att visa upp dem.
Arbeta i mappen Flask/.
# Ställ dig i kurskatalogen
cd me/flask/
Det ska vara möjligt att skapa formerna
Square
,Circle
ochTriangle
.Skapa en basklass
Shape
. Låt klasserna förSquare
,Circle
ochTriangle
ärva frånShape
. Du kommer inte skapa några objekt av “Shape”, den klassen ska bara användas för att samla attribut och metoder så vi kan ärva dem och använda i subklasserna.Basklassen ska kräva att metoderna
draw()
,get_area()
ochvalidate(height, width)
implementeras i subklasserna. Låtvalidate(height, width)
vara en statisk metod.Varje subklass ska ha sin egna validering. I
validate()
, för varje subklass, ska du sätta en regel för vilka mått som är OK för den typen av form. Till exempel så måste höjd och bredd vara samma för att det ska bli en kvadrat eller cirkel.
Innan du skapar ett objekt av en klass ska dess mått skickas till validerings metoden. Bara om måtten är godkända skapar du ett objekt med dem.Läs introduktionen för att se vad
get_area()
ska användas till/göra.Låt
draw()
returnera en sträng som innehåller html kod för en div som innehåller inline style för formen, kolla tips från coachen.Kommunikationen med klasserna ska ske via en Handler/Controller klass. app.py ska bara prata med Handler som pratar med de olika shape klasserna.
De ska finnas minst tre färger att välja mellan.
# Ställ dig i kurskatalogen
dbwebb validate flask
dbwebb publish flask
Rätta eventuella fel som dyker upp och validera igen. När det ser grönt ut så är du klar.
#Extrauppgift
#Tips från coachen
Tänk på att det går att använda inline style, tex: <div style="posistion:absolute;top:10;left:50;">
.
Validera ofta. Så slipper du en massa valideringsfel i slutet av övningen.
Lycka till och hojta till i forumet om du behöver hjälp!
#Revision history
- 2018-02-05: (B, aar) Updated few requirements.
- 2017-12-08: (A, lew) First version for v2.