> For the complete documentation index, see [llms.txt](https://coursepress.gitbook.io/1dv021/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://coursepress.gitbook.io/1dv021/ovningsuppgifter/del-2/a-niva/legotillverkaren.md).

# Legotillverkaren

{% hint style="info" %}
A-nivå, [repo](https://github.com/1dv021/exercise-lego-maker.git), [lösningsförslag](https://github.com/1dv021/exercise-solution-proposals/tree/master/part-2/lego-maker).
{% endhint %}

{% hint style="danger" %}
**VIKTIGT!** Innan du börjar arbeta med övningsuppgiften är det viktigt att du följer guiden [Att komma igång med en övningsuppgift](/1dv021/guider/att-komma-igang-med-en-ovningsuppgift.md) för att lägga till övningsuppgiftens repo till ditt repo för övningsuppgifter.
{% endhint %}

## Uppgift

Hämta hem övningsuppgiftens repo, lägg till en .gitignore-fil och komplettera enligt nedan.

I denna uppgift ska du komplettera deluppgift 1 till 3 med kod så att objekt, som representerar en enkel legobit, skapas enligt tre olika designmönster, *"Factory Pattern"*, *"Constructor Pattern"* och *"Constructor/Prototype Pattern"* . I en fjärde deluppgiften ska du även använda dig av "*class syntax*". ~~I den femte deluppgiften ska du prova på "*Factory Pattern with Object.create*"~~.

&#x20;Övningsuppgiften är uppdelad i fem filer och du ska skriva kod i som skapar objekt enligt nämnda sätt. Genomför uppgiften genom att arbeta med filerna, och designmönsterna, i tur och ordning.

1. `lego-1-factory-pattern.js` - *"Factory Pattern"*
2. `lego-2-constructor-pattern.js` - *"Constructor Pattern"*
3. `lego-3-constructor-prototype-pattern.js` - *"Constructor/Prototype Pattern"*
4. `lego-4-class.js` - *"Class"*
5. :warning:~~`lego-5-object-create.js` - *"Factory Pattern with Object.create"*~~

{% hint style="info" %}
Hoppa över den femte deluppgiften. Tycker du att du har tid över kan den dock vara intressant att göra.
{% endhint %}

Genom att använda de olika designmönstren ska objekt skapas som har egenskaper och metoder enligt nedan.

### Egenskaper

* `x`, antal knoppar i horisontell led, standardvärde 2.
* `y`, antal knoppar i vertikal led, standardvärde 4.
* `color`, färg som sträng, standardvärde 'red'.

### Metoder

* `toString`, returnerar en sträng representerande objektet, `® ® ® ®\n® ® ® ®` ska retuneras för ett objekt där `x` är 4 och `y` är 2.
* `render`, skriver ut strängen metoden `toString` returnerar i ett konsolfönster.&#x20;

## :bulb: Tips

**Ta del av föreläsningarna om olika sätt att skapa objekt innan du fullständigt fullföljer denna uppgift!**

Genom att köra testerna som kommer med övningsuppgiften kan du undersöka om koden du skrivit löst uppgiften (i alla fall enligt testet...).
