De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

6-1-2010Wolter Kaper - Model-objecten en hun relaties in Ruby on Rails Webprogrammeren, week 1.

Verwante presentaties


Presentatie over: "6-1-2010Wolter Kaper - Model-objecten en hun relaties in Ruby on Rails Webprogrammeren, week 1."— Transcript van de presentatie:

1 Wolter Kaper - Model-objecten en hun relaties in Ruby on Rails Webprogrammeren, week 1

2 Vandaag Domein model ontwerpen (UML)  Op papier >> rapport Views ontwerpen  Schetsjes Associaties realiseren in RoR  Model objecten  Database tabellen  Views: een klikmodel Wolter Kaper -

3 Wolter Kaper - Lagen in een applicatie User Interface Laag Domein Model, Modellen Laag Database Laag Gebruiker

4 Wolter Kaper - Domein model Bedrijf WerknemerTeam * 1..* * Aandeelhouder 1 1..* Persoon is een heeft bevat

5 Wolter Kaper - Wat is een domein model? Ontwerp voor een set object klassen Overeenkomst met buitenwereld Relaties zijn aangegeven  “is een” relaties: erfelijkheid  “heeft” relaties  “bevat” relaties (existentie afhankelijk) Datavelden Methoden

6 Wolter Kaper - Lagen in een applicatie User Interface Laag Domein Model, Modellen Laag Database Laag Gebruiker

7 Wolter Kaper - Lagen volgens MVC + ORM Gebruiker + browser ViewController Model object URL actie Database tabel

8 Wolter Kaper - Doel voor vrijdagmiddag: Domein model op papier:  Welke objectklassen, relaties ertussen,  Datavelden en methoden (hoeft niet compleet) Implementeren in Rails als “snel prototype”  Schermbeelden hangen zinnig samen met objecten,  Kliks brengen je van het ene naar het andere scherm,  Basisdingen – new, index, edit,… - werken.

9 Wolter Kaper - Relaties en hoe je ze realiseert In Ruby on Rails

10 Eén naar meer relatie Wolter Kaper - AB 0..1 * AB *

11 Wolter Kaper - “Een naar meer” relatie: in de database idadresbouwjaar 1Lodewijk laan Braambos Kennedy laan idnaamhuis- nummer flatgebouw _id 1Jansen3051 2Pietersen3061 3Klaassen252NULL flatgebouwsbewoners primaire sleutelverwijzende sleutel flatgebouw: references

12 Wolter Kaper - “Eén naar meer” relatie: in model klassen class Flatgebouw has_many :bewoners... end class Bewoner belongs_to :flatgebouw... end

13 Wolter Kaper - Ruby on Rails ORM regels Elke tabel een “id” kolom (autonummering) Tabelnaam: engels meervoud van object klassenaam Verwijzende sleutel: objectklasse waarnaar wordt verwezen + “_id” In objectklassen: has_many, has_one, belongs_to

14 Eén naar meer: schermontwerp Wolter Kaper - Flatgebouwen editdel editdel new Flatgebouw Adres Bouwjaar Bewoners new editdel editdel update Bewoner Naam Huisnummer Flatgebouw Finkelstein  update

15 Eén naar meer “bevat” (“contains”) Wolter Kaper - AB 1 *

16 Wolter Kaper - “Een naar meer” “bevat” relatie in de database idnaam 1Philips 2Shell 3Albert Heyn idnaambedrijf_id 1Gloeilampen1 2Electronica1 3Aardolieproducten2 bedrijfsdivisies primaire sleutelverwijzende sleutel

17 Wolter Kaper - “Eén naar meer” “bevat” relatie in de model klassen class Bedrijf has_many :divisies, \ :dependent => :destroy... end class Divisie belongs_to :bedrijf... end

18 “Eén naar meer” “bevat” relatie: URL routering GET /bedrijfs/1 GET /divisies/2…. …óf: GET /bedrijfs/1/divisies/2 map.resources :bedrijfs map.resources :divisies …. …óf: map.resources :bedrijfs, :has_many=>:divisies Wolter Kaper - bedrijfs_ididparams[…]in divisies_controller

19 “Meer naar meer” Wolter Kaper - AB * * AB 1 * A_B * 1

20 Wolter Kaper - “Meer naar meer”: database idtiteljaar 1Turks fruit1972 2Werkkleding1984 3Max Havelaar1880 4Proceedings of the 23th conference on fluorescence 2001 idachternaaminitialen 1WolkersJ. 2Douwes-DekkerE. 3JonesK. 4ButterworthL.F. boeksauteurs

21 Wolter Kaper - Oplossing: extra tabel boek_idauteur_id boekauteurs

22 Wolter Kaper - “Meer naar meer” relatie in de model klassen class Boek has_many :boekauteurs has_many :auteurs, \ :through => :boekauteurs... end class Auteur has_many :boekauteurs has_many :boeks, \ :through => :boekauteurs... end Notitie: “\” dient om een statement te verdelen over meerdere regels. Wellicht heb je hem hier niet nodig! Class Boekauteur belongs_to :boek belongs_to :auteur … end

23 Wolter Kaper - “Meer naar meer” relatie in de model klassen class Boek has_many :boeks_auteurs, \ :dependent => :destroy has_many :auteurs, \ :through => :boeks_auteurs... end class Auteur has_many :boeks_auteurs, \ :dependent => :destroy has_many :boeks, \ :through => :boeks_auteurs... end Class Boekauteur belongs_to :boek belongs_to :auteur … end

24 “Is een” relatie Wolter Kaper - Persoon Werknemer Aandeelhouder

25 Wolter Kaper - “is een” relatie – erfelijkheid in de database Single Table Inheritance Multiple Table Inheritance

26 Wolter Kaper - Single Table Inheritance Persoon naam Werknemer salaris Aandeelhouder kapitaal Modellen laag... Database laag... Persoons type naam salaris kapitaal

27 Wolter Kaper - Single Table Inheritance class Persoon < ActiveRecord::Base... end class Werknemer < Persoon... end class Aandeelhouder < Persoon... end

28 Wolter Kaper - Single table inheritance Subklassen worden in één tabel opgeslagen Tabel krijgt naam van de hoofdklasse (in meervoud) Kolom “type” geeft subklasse aan Veel cellen blijven leeg (null)

29 Wolter Kaper - Multiple Table Inheritance Persoon naam Werknemer salaris Aandeelhouder kapitaal Modellen laag... Database laag... Werknemer id naam salaris Aandeelhouder id naam kapitaal

30 Wolter Kaper - Multiple Table Inheritance class Persoon < ActiveRecord::Base self.abstract = true... end class Werknemer < Persoon... end class Aandeelhouder < Persoon... end

31 Wolter Kaper - Single of Multiple Table? Single Als je met één query objecten van diverse subtypen wilt ophalen Als je de subtypen zonder onderscheid wilt kunnen behandelen Multiple Als de subtypen veel verschillende kolommen hebben

32 Wolter Kaper - Gegevenstypen MySQL kolomtypenRails kolomtypenRuby variabelen TINYINT(1):booleanTrueclass / Falseclass DATE:dateDate DATETIME:datetimeTime DECIMAL:decimalBigDecimal / Integer FLOAT:floatFloat INT:integerFixnum VARCHAR(255):stringString TEXT:textString :references

33 Wolter Kaper - Voorbeeldjes “snel prototype” één-naar-meer:  Blog tutorial – rails site – ken je al meer-naar-meer  is-een 

34 Wolter Kaper - Doel voor vrijdagmiddag: Domein model op papier:  Welke objectklassen, relaties ertussen,  Datavelden en methoden (hoeft niet compleet) Implementeren in Rails als “snel prototype”  Schermbeelden hangen zinnig samen met objecten,  Kliks brengen je van het ene naar het andere scherm,  Basisdingen – new, index, edit,… - werken.


Download ppt "6-1-2010Wolter Kaper - Model-objecten en hun relaties in Ruby on Rails Webprogrammeren, week 1."

Verwante presentaties


Ads door Google