Skapa former

By . Latest revision .

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.

Så här kan det se ut när det är färdigt.

#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/
  1. Det ska vara möjligt att skapa formerna Square, Circle och Triangle.

  2. Skapa en basklass Shape. Låt klasserna för Square, Circle och Triangle ärva från Shape. 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.

  3. Basklassen ska kräva att metoderna draw(), get_area() och validate(height, width) implementeras i subklasserna. Låt validate(height, width) vara en statisk metod.

  4. 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.

  5. Läs introduktionen för att se vad get_area() ska användas till/göra.

  6. 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.

  7. Kommunikationen med klasserna ska ske via en Handler/Controller klass. app.py ska bara prata med Handler som pratar med de olika shape klasserna.

  8. 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

  1. Lägg till fler former, tex en cylinder eller hyptagon.

#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.

Document source.

Category: oopython.