Olen opettelemassa C ohjelmointia, ja jonkin verran tainnut jo edistyäkin, mutta pulmanani on vielä luokkien väliset yhteydet. Selostan hieman tarkemmin:
Pulmana on siis: Minulla on kaksi yhtenä luokkana videovuokraamo ja kaksi siihen liittyvää luokkaa nimeltään "asiakas" ja "filmit". Tiedän jo ainakin teoriassa, miten voin rakentaa listat asiakkaista ja filmeistä. Pääpulma on: Miten yhdistän näiden kahden luokan tiedot?
Haluan siis saada käyttäjän näkyville tiedot, että missä mikäkin filmi kullakin hetkellä on. Siis filmi olisi hyllyssä tai lainassa. Jos se on lainassa, niin näkyville tieto kenellä se on. Siis esim tällain:
Filmi Tila Asiakas
Miami vice Hyllyssä -
Tähtien sota Lainassa Masa Meikäläinen
Toisaalta asiakkaista seuraavanlaista tulostetta:
Asiakas Vuokraus
Masa Meikäläinen Tähtien sota
Masa Meikäläinen Hulk
Maija Meikäläinen Muistojen polku
Mikko Meikäläinen -
jne. Pulmana siis on, että miten saan luotua tarvittavat yhteydet luokkien välille. Tosi hienoa kun vain joku osais auttaa. Vinkit hyvistä kirjoista aiheeseen liittyen kelpaavat myös.
Pulmana on siis: Minulla on kaksi yhtenä luokkana videovuokraamo ja kaksi siihen liittyvää luokkaa nimeltään "asiakas" ja "filmit". Tiedän jo ainakin teoriassa, miten voin rakentaa listat asiakkaista ja filmeistä. Pääpulma on: Miten yhdistän näiden kahden luokan tiedot?
Haluan siis saada käyttäjän näkyville tiedot, että missä mikäkin filmi kullakin hetkellä on. Siis filmi olisi hyllyssä tai lainassa. Jos se on lainassa, niin näkyville tieto kenellä se on. Siis esim tällain:
Filmi Tila Asiakas
Miami vice Hyllyssä -
Tähtien sota Lainassa Masa Meikäläinen
Toisaalta asiakkaista seuraavanlaista tulostetta:
Asiakas Vuokraus
Masa Meikäläinen Tähtien sota
Masa Meikäläinen Hulk
Maija Meikäläinen Muistojen polku
Mikko Meikäläinen -
jne. Pulmana siis on, että miten saan luotua tarvittavat yhteydet luokkien välille. Tosi hienoa kun vain joku osais auttaa. Vinkit hyvistä kirjoista aiheeseen liittyen kelpaavat myös.
Vastaukset 3
Vanhimmat
1. tapa
Lisää kirjaan jäsen boolean lainassa, ja Stringi lainaajan nimi (tai referensi lainaajaan)
2. Tapa
Lisää asiakas luokkaan lista kirjoista (std:list) ja videovuokraamoon myös, kun lainaus tapahtuu siiretään videovuokraamon listasta kirja asiakaan listaan, palautuksessa kirja otetaan lainaajalta ja siiretään videovuokraamoon.
3. Tapa
Tee luokka nimeltä Lainaus joka yhdistää lainaajan ja kirjan. Lainaus luokkat ovat videovuokraamon sisällä.
Sikasiistiä! :) Rupeankin heti kokeilemaan. Nuo ajatukset selkiyttivät omia ajatuksia huomattavasti. Varmaan näillä eväillä homma hoituu pitkälle eteenpäin.
Sanottakoon heti alkuun, etten osaa juurikaan yhtään C . Mitä nyt tuosta selostuksesta tajusin, niin mielestäni järkevintä olisi tehdä ihan tietokannan tapainen ilmeisesti struct/list? tai käyttää suosiolla tietokantaa esim SQLite, jota sitten käskyttäs eri luokkien kautta. Siis varsinainen tieto ei olisi kyseisissä luokissa.
Tietokanta tauluina
Asiakkaat:
asiakas_nro
nimi...
Kirjat:
kirja_id
nimi
ISBN
Lainat:
laina_id
asiakas_nro
kirja_id
Tällöin tuota olisi helppo laajentaa tarpeenvaatiessa ja käyttää tietoja muualtakin kuin tuon ohjelman kautta perus SQL:llä.
Toki tuota voi sitten yksinkertaistaa,mutta siitä saattaa tulla myöhemmin ongelmia.
Asiakkaat:
asiakas_nro
lainat = array
tietoa..
Kirjat:
kirja_id
nimi
ISBN
lainassa = bool