Permalänk

Program med denna fukntion

Hejsan!

Jag vill skapa ett program med hjälp av klasser och objekt. Tänkte beskriva hur den ska vara på och vill att ni ska guida mig genom hur man ska bygga upp ett sådant program med " börja med tips " och osv..

Den första klassen kan tänkas användas i ett program på en restaurang för att skapa menyn på deras websida. Varje objekt som skapas ur denna klass är en maträtt och dess beskrivning.

Klassnamn: Maträtt, lämpligare med "Dish" för att slippa ÅÄÖ.

Egenskaper (=instansvariabler):
-Namn på maträtt
-beskrivning
-pris
-kaloriinnehåll
-glutenfri

Se till att du använder lämpliga datatyper för dessa.

Efter du skrivit klassen skapar du några testobjekt, dessa ska skapas upp enligt följande mönster.

d1 = Dish("Strömming","Med potatismos & skirat smör",99,500,False)
d2 = Dish("Biff Rydberg", "Mums", 149, 700, True)

För att skriva ut ett objekt ska man kunna skriva
print d1
print d2
För att möjliggöra detta ska ni även skriva en __str__ metod som presenterar rätten på ett lämpligt sätt.

Permalänk
Medlem

Vilket språk? Python?

Permalänk

Ser helt klart ut att vara en skoluppgift i python

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

Exakt det är en skoluppgift i python!

Permalänk
Medlem

Du söker en meny, en meny har rätter, en meny kan även ha kategorier och drycker. Kan en kategori innehåller både maträtter och drycker? Och måste alla rätter/drycker finnas under en kategori? Så skulle jag inleda med "menyn".

En maträtt kan vara glutenfri, den kan också vara fettfri, rik på kolhydrater, innehålla broccoli, vara grön och gul. Det känns inte riktigt som att "glutenfri, sant eller falskt" är så relevant för vårat objekt maträtt, kanske kan ligga under någon kategori?

Så hade jag börjat. Hur långt har du kommit?

Visa signatur

Cat funeral! Cat funeral!
>>> 112383 <<<

Permalänk
Skrivet av pscs3:

Du söker en meny, en meny har rätter, en meny kan även ha kategorier och drycker. Kan en kategori innehåller både maträtter och drycker? Och måste alla rätter/drycker finnas under en kategori? Så skulle jag inleda med "menyn".

En maträtt kan vara glutenfri, den kan också vara fettfri, rik på kolhydrater, innehålla broccoli, vara grön och gul. Det känns inte riktigt som att "glutenfri, sant eller falskt" är så relevant för vårat objekt maträtt, kanske kan ligga under någon kategori?

Så hade jag börjat. Hur långt har du kommit?

Jag hade nog gjort en klass som till som hette "Ingredient" som har lite olika värden som "Gluten", "Laktos", "Näringsvärde" etc etc (fast på engelska såklart). Och sen använda metoder i maträtten för att räkna ut saker som näringsvärdet på rätten, om rätten är laktos/glutenfri

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

JAG är splitterny när det kommer till programmering och ännu nyare till OOP-konceptet. Så har otroligt svårt att komma igång..

Permalänk
Medlem
Skrivet av Quantum-CPU:

JAG är splitterny när det kommer till programmering och ännu nyare till OOP-konceptet. Så har otroligt svårt att komma igång..

Ni har väl föreläsningar, labbar och kursmaterial?
Känns ju meningslöst att ta en kurs om du inte kan tänka själv.

Permalänk

Jo det har vi men det är fortfarande lite trögt för mig. Blev avancerat rätt så snabbt. Avancerat i min standard dvs!
Men helt seriöst grabbar, jag är inte här så ni kan läxa upp mig när jag ber om hjälp. Utan ge lite tips med hjälp av koder och osv. Allt annat kan ni behålla för er själva..

Permalänk
Medlem

class Dish(list): def __init__(self, *args): list.__init__(self, args)

Notera att den här klassen gör allt den ska enligt din beskrivning men att du nog får lite o förklara om du lämnar in den såhär

Mer seriöst: Vet knappt hur man kan förklara utan att lösa hela uppgiften Skapa en klass till att börja med, döp den till Dish. Testa att skapa upp klassen. Lägg till en instansvariabel, du kan döpa den till name tex. Testa att skapa upp klassen. Skapa en konstruktor som inte gör något. Testa att skapa upp klassen. Ändra konstruktorn så den tar en parameter och sparar i name-variabeln. Testa att skapa upp klassen. Lägg till en __str__-metod som inte gör något. Testa att skapa upp klassen. Ändra den så att den returnerar "hello world" eller liknande. Testa att skapa upp klassen. Testa att göra print på den. Ändra så att __str__-metoden skriver ut name-variabeln. Testa att skapa upp klassen. Testa att göra print på den. Repetera för resten av egenskaperna. Klar.

Visa signatur

AK47s for everyone! - Angry mob
Since NaN /= NaN, I think, we should decipher 'NaN' as 'Not a NaN' - Miguel Mitrofanov
(Varför är människan så benägen att tro på Gud?) Antagligen har det lönat sig och evolutionen har drivit fram sådana hjärnor. - Anon

Permalänk

jag vet att __init__ och __str__ är inbyggda i python men vad innebär dem exakt?

Permalänk
Medlem

__init__ - Google Search
__str__ - Google Search
och välj första resultatet på båda länkarna

Visa signatur

AK47s for everyone! - Angry mob
Since NaN /= NaN, I think, we should decipher 'NaN' as 'Not a NaN' - Miguel Mitrofanov
(Varför är människan så benägen att tro på Gud?) Antagligen har det lönat sig och evolutionen har drivit fram sådana hjärnor. - Anon

Permalänk

tack så mycket, vb! ska kämpa på och återvända till dig om det är något.. TACK ÄNNU EN GÅNG!

Permalänk

Ibland så gör man ett program som tex det här:
class Person(list):
def __init__(self, name):
self.name = name
def sayHi(self):
print 'Hello, my name is', self.name

p = Person('Swaroop')
p.sayHi()

Vad innebär self.name = name? Och varför finns det två metoder?

Permalänk

"self.name = name" innebär att man sätter variabeln "name" på objektet till det namn som skickades in till konstruktorn.
sayHi är en funktion som använder den variabeln som sätts via konstruktorn för att printa ut ett hellomeddelande (enligt strängen i funktionen)

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

Är instansvariabel ett annat namn för objektvariabel dvs object = instance?

Permalänk
Skrivet av Quantum-CPU:

Är instansvariabel ett annat namn för objektvariabel dvs object = instance?

Jag har hört två olika versioner angående detta. Normalt sätt är en instansvariabel och en objektsvariabel samma sak. Men vet en som skilde på dem (min första programmeringslärare) han sa att objektvariabler är variabler som pekar på objekt till skillnad ifrån strängar, booleans etc.. Så en instansvariabel som håller en sträng är inte en objektsvariabel.

Visa signatur

Avatarkreds till: http://imgur.com/HOxIL
Alakai säger: Ryssen skrattar. Norrland hembränner på uppdrag av regeringen. Sälar dör i blyförgiftning, fulla och glada. Förvirringen är total. Kungen är nöjd.

Permalänk
Medlem
Skrivet av Mikael_Berglund:

Jag har hört två olika versioner angående detta. Normalt sätt är en instansvariabel och en objektsvariabel samma sak. Men vet en som skilde på dem (min första programmeringslärare) han sa att objektvariabler är variabler som pekar på objekt till skillnad ifrån strängar, booleans etc.. Så en instansvariabel som håller en sträng är inte en objektsvariabel.

Nåväl den definitionen var inte så bra framför allt inte i python, smalltalk, ruby, io, self etc. där ju faktiskt öven strängar, boolean, int, double osv är objekt (av klasser (eller prototyper i io och self)).

Den definition kanske kan fungera i;
* Java där int, boolean, double osv faktiskt är primitiva datatyper (det gäller inte String som är en klass)
* C++ där int, pekare, bool, char* är primitiva
* <insert annat programmeringspråk med liknande konstruktioner här>

Permalänk
Medlem
Skrivet av Mikael_Berglund:

Jag har hört två olika versioner angående detta. Normalt sätt är en instansvariabel och en objektsvariabel samma sak. Men vet en som skilde på dem (min första programmeringslärare) han sa att objektvariabler är variabler som pekar på objekt till skillnad ifrån strängar, booleans etc.. Så en instansvariabel som håller en sträng är inte en objektsvariabel.

Strängar brukar vara objekt. Termen "objektvariabel" känns väl lite godtycklig och onödig, IMO.

Permalänk

Har någon lyckats göra ett dugligt program av beskrivningen?

Permalänk
Skrivet av Quantum-CPU:

Har någon lyckats göra ett dugligt program av beskrivningen?

Är inte det ditt jobb?

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

Jo, men jag har fastnat och ber om lite reinforcement

Permalänk
Medlem
Skrivet av Quantum-CPU:

Jo, men jag har fastnat och ber om lite reinforcement

Hur långt har du kommit då?

Permalänk

# -*- coding: cp1252 -*-
class Dish:

def __init__(self, arg1, arg2, arg3, arg4):
self.arg1 = arg1
self.arg2 = arg2
self.arg3 = arg3
self.arg4 = arg4
def __str__(self):
return self.arg1 + str(self.arg2) + self.arg3 + self.arg4 +'\n'

Maträtt1 = Dish('Paj ', 'Paj', ' Paj ', ' Paj')
Maträtt2 = Dish('Äta ', 'äta', 'äta', 'äta')
Maträtt3 = Dish('ost ', 'ost', ' ost ', ' ost')

print 'Något ska skrivas ut\n'
print Maträtt1
print Maträtt2
print Maträtt3

Permalänk
Medlem
Skrivet av Quantum-CPU:

Har någon lyckats göra ett dugligt program av beskrivningen?

Jag gjorde ju det i mitt andra inlägg! Min kod är dessutom väldigt generell så den funkar även om man skulle vilja ha en till egenskap

När du skriver kod så se till att använda [code]-taggen, som jag gjorde runt min kod, annars ser man inte hur du tabbat koden och det är viktig del. Men vad är det du tycker är fel med din egen kod?

Visa signatur

AK47s for everyone! - Angry mob
Since NaN /= NaN, I think, we should decipher 'NaN' as 'Not a NaN' - Miguel Mitrofanov
(Varför är människan så benägen att tro på Gud?) Antagligen har det lönat sig och evolutionen har drivit fram sådana hjärnor. - Anon

Permalänk

Nej men min kod är rätt:) Kan inte du göra klart ditt program då? Jag har lite svårt med den och med klar menar jag att du sätter in namnen som fanns i beskrivningen osv

Permalänk
Medlem
Skrivet av Quantum-CPU:

Nej men min kod är rätt:) Kan inte du göra klart ditt program då? Jag har lite svårt med den och med klar menar jag att du sätter in namnen som fanns i beskrivningen osv

Min Dish är lika bra som din, dvs man kan byta dom rakt av:

# -*- coding: cp1252 -*- class Dish(list): def __init__(self, *args): list.__init__(self, args) Maträtt1 = Dish('Paj ', 'Paj', ' Paj ', ' Paj') Maträtt2 = Dish('Äta ', 'äta', 'äta', 'äta') Maträtt3 = Dish('ost ', 'ost', ' ost ', ' ost') print 'Något ska skrivas ut\n' print Maträtt1 print Maträtt2 print Maträtt3

För att göra din kod lite snyggare så hade jag döpt arg1, arg2 osv efter vilken egenskap dom representerar, dvs byta arg1 mot name, arg2 mot description osv.

Visa signatur

AK47s for everyone! - Angry mob
Since NaN /= NaN, I think, we should decipher 'NaN' as 'Not a NaN' - Miguel Mitrofanov
(Varför är människan så benägen att tro på Gud?) Antagligen har det lönat sig och evolutionen har drivit fram sådana hjärnor. - Anon