Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions compendium/modules/w05-classes-exercise.tex
Original file line number Diff line number Diff line change
Expand Up @@ -567,20 +567,20 @@
//> using dep "se.lth.cs::introprog:1.4.0"
package graphics

import introprog.PixelWindow
import java.awt.Color

extension def toPixels(p: Point): Seq[Int] =
Seq(point.x.round.toInt, point.y.round.toInt)
extension (p: Point) def toPixels: Seq[Int] =
Seq(p.x.round.toInt, p.y.round.toInt)

class PolygonWindow:
import introprog.PixelWindow
import java.awt.Color

val black = Color(0, 0, 0)
val coolGreen = Color(0, 255, 111)
val width = 500
val height = 500

val window =
PixelWindow(width, height, title = "Polygons",
PixelWindow(width, height, title = "Polygons",
background = black, foreground = coolGreen)

def draw(polygon: Polygon): Unit =
Expand All @@ -591,13 +591,13 @@
window.line(from(0), from(1), to(0), to(1), lineWidth = 2)
\end{Code}

Skapa en case-klass vid namn \code{Polygon} men en parameter \code{points: Vector[Point]} och ett attribut \code{val nbrOfCorners: Int}. Case-klassen \code{Polygon} ska också ligga i paketet \code{graphics}.
Skapa en case-klass vid namn \code{Polygon} med en parameter \code{points: Vector[Point]} och ett attribut \code{val nbrOfCorners: Int}. Case-klassen \code{Polygon} ska också ligga i paketet \code{graphics}.

Likt klassen \code{Point} ovan ska också \code{Polygon} ha ett kompanjonsobjekt.
Kompanjonsobjektet ska ha en metod som skapar en regelbunden polygon vid namn \code{regular} med följande parametrar: \code{nbrOfCorners: Int, radius: Double, midPoint: Point}\\
Kompanjonsobjektet ska ha en metod \code{regular} som skapar en regelbunden polygon. Metoden ska ha följande parametrar: \code{nbrOfCorners: Int, radius: Double, midPoint: Point}\\
Fundera över hur case-klassen \code{Polygon} och dess kompanjonsobjekt ska se ut för att koden ovan i \code{PolygonWindow} ska fungera som tänkt. Testa att allt fungerar i REPL.

\Subtask Kan man använda metoden \code{regularPolygon} för att rita cirklar? Kan man använda \code{Polygon} för att representera oregelbundna polygoner?
\Subtask Kan man använda metoden \code{regular} för att rita cirklar? Kan man använda \code{Polygon} för att representera oregelbundna polygoner?
Testa i REPL.

\SOLUTION
Expand Down Expand Up @@ -646,7 +646,7 @@
Även en oregelbunden polygon går att skapa. Använd då konstruktorn till \code{Polygon} direkt. Till exempel likt nedan.
\begin{REPL}
scala> val irregular =
Polygon(Vector(Point(34,83), Point(16,42), Point(77,77), Point(100,138)))
Polygon(Vector(Point(1,8), Point(33,14), Point(99,87), Point(42,56)))
scala> window.draw(irregular)
\end{REPL}

Expand Down
3 changes: 2 additions & 1 deletion contributors.tex
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
% LIST OF CONTRIBUTORS to https://github.com/lunduniversity/introprog
% Please contact bjorn.regnell@cs.lth.se if you think you should be
% on this list, or make a pull request with an update of file briefly
% describing your contribtion in the commit text.
% describing your contribution in the commit text.
% This work is licenced under CC-BY-SA-4.0.
%!TEX encoding = UTF-8 Unicode
%!TEX root = compendium/compendium.tex
Expand All @@ -18,6 +18,7 @@
Casper Schreiter,
Cecilia Lindskog,
Dag Hemberg,
Elias Åradsson,
Elliot Bräck,
Elsa Cervetti Ogestad,
Emelie Engström,
Expand Down