Klass med attribut för flera menyer, eller samla funktioner med menyer i klass? C#

Permalänk

Klass med attribut för flera menyer, eller samla funktioner med menyer i klass? C#

God kväll.

Sitter och ska göra ett eget program där man ska kunna välja eller slumpa middagar beroende på menyval. Programmet kommer ha en huvudmeny med olika kategorier att välja mellan, såsom kött, fågel, fisk, vegetariskt osv. Under varje kategori ska det finnas ytterligare menyval (med maträtter inom den kategorin). Huvudmenyn kommer jag lägga i programklassen Main.

Min fråga är hur jag bäst och snyggast ska göra här. Till saken hör att jag är väldigt ny på programmering så jag kan inte ta emot för avancerade svar Just klasser är ganska nytt för mig så jag försöker lära mig medans jag gör detta program också.

Min första tanke var att göra en klass som kan kallas så fort jag ska använda en meny, varsomhelst i programmet. Men gissar att detta blir svårt då varje meny kommer vara unik som innehålla olika antal val osv. Men det kanske funkar?

Min andra tanke som låter rimligare och enklare i mitt huvud är att ha en klass med massa funktioner, där jag har en specifik meny i varje funktion som kallas när den ska s.a.s. T ex

public class Menus { public void MeatMenu() { // Meny för kategori "Kött" } public void BirdMenu() { // Meny för kategori "Fågel" } public void VegMenu() { // Meny för kategori "Vegetariskt" } }

Det kanske finns bättre, snyggare och mer effektiva alternativ ändå? Eller ska jag bara lägga alla menyer i funktioner utanför program-klassen? Hur brukar man tänka när det gäller liknande innehåll i program? Vill gärna använda klasser dels pga "snyggare" och dels för att lära mig mer om det samtidigt.

Hoppas ni förstår min fråga, jag har inte börjat koda än (förutom gjort en huvudmeny i main i stort sett) utan bara planerat i pseudokod och då kom den här tanken upp, hur jag ska göra.

Permalänk
Medlem

En "Meny" klass låter vettigt som innehåller generella funktioner för att visa en meny och välja alternativ från den , men har du flera olika menyer så skall inte den klassen innehålla de faktiska menyvalen.
Antingen så kan du låta varje instans av "Meny" klassen ha olika innehåll, eller så kan du göra separata underklasser för varje typ av meny.
Vilket som är enklast kan nog variera lite beroende på programmeringsspråk.

Permalänk
Skrivet av Erik_T:

En "Meny" klass låter vettigt som innehåller generella funktioner för att visa en meny och välja alternativ från den , men har du flera olika menyer så skall inte den klassen innehålla de faktiska menyvalen.
Antingen så kan du låta varje instans av "Meny" klassen ha olika innehåll, eller så kan du göra separata underklasser för varje typ av meny.
Vilket som är enklast kan nog variera lite beroende på programmeringsspråk.

Det där med separata underklasser med menyer, varför kan man inte istället bara lägga alla menyer samt de faktiska menyvalen i funktionerna i klassen här ovan? Bara en nyfiken fråga, jag har inte superkoll på detta med klasser, därav undran

Så bara så jag fattar rätt, om jag skapar separata underklasser så ser det ut som mitt kodexempel ovan, bara att varje funktion blir/byts ut mot ett nytt klassanrop? Eller är jag helt ute och cyklar? Dvs har jag 6 olika menyer så blir det 6 separata klasser?

Att låta varje instans av "meny" klassen ha olika innehålla låter egentligen som den bästa lösningen, men tror inte jag mäktar med det med min kunskap ännu

Permalänk
Medlem
Skrivet av MikePikeParon:

Det där med separata underklasser med menyer, varför kan man inte istället bara lägga alla menyer samt de faktiska menyvalen i funktionerna i klassen här ovan? Bara en nyfiken fråga, jag har inte superkoll på detta med klasser, därav undran

Klart du kan göra så, men då finns det liksom ingen poäng med att ha en menyklass till att börja med. Då kan du lika gärna bara ha de funktionerna direkt utan att stuva in dem i en klass.

Citat:

Så bara så jag fattar rätt, om jag skapar separata underklasser så ser det ut som mitt kodexempel ovan, bara att varje funktion blir/byts ut mot ett nytt klassanrop? Eller är jag helt ute och cyklar? Dvs har jag 6 olika menyer så blir det 6 separata klasser?

Att låta varje instans av "meny" klassen ha olika innehålla låter egentligen som den bästa lösningen, men tror inte jag mäktar med det med min kunskap ännu

Har du underklasser så ärver de massa funktionalitet från föräldraklassen, så där en underklass gör något annorlunda än föräldraklassen så har den sin egen version av dessa funktioner/variabler som då används istället. Det här med klasser och arv är lite komplicerat, men något du behöver känna till om du skall jobba med klasser, så dags att läsa på.

Permalänk
Skrivet av Erik_T:

Klart du kan göra så, men då finns det liksom ingen poäng med att ha en menyklass till att börja med. Då kan du lika gärna bara ha de funktionerna direkt utan att stuva in dem i en klass.

Har du underklasser så ärver de massa funktionalitet från föräldraklassen, så där en underklass gör något annorlunda än föräldraklassen så har den sin egen version av dessa funktioner/variabler som då används istället. Det här med klasser och arv är lite komplicerat, men något du behöver känna till om du skall jobba med klasser, så dags att läsa på.

Ja sant, jag tänkte mest för strukturens skull att alla funktioner (med menyer) isåfall låg i en klass istället för någonstans i programklassen där det redan är massa kod. Men kanske var galet tänkt.

Ja, klasser är som jag skrev i mitt första inlägg väldigt nytt för mig, och läsa på gör jag hela tiden samtidigt som jag försöker använda mig av det i koden. Frågar även här eftersom jag faktiskt inte vet, och här finns kunskap precis som det finns på tuben eller i en bok (som jag också kollar). Jag skriver fel kod 750 ggr men när jag gör fel och läser på så lär jag mig samtidigt. Så jag vill inte börja försöka koda i klasser när jag kan det fullt ut teoretiskt, utan vill ju lära mig genom att göra fel också

Men hursomhelst, jag får kanske tänka om här oavsett, detta är en uppgift i en kurs i programmering 1 (som inte går igenom klasser alls, vill bara försöka få aningen högre betyg genom att lägga in det) och jag har 2 veckor på mig att lämna in den, och har 2 timmar/kväll efter jobb osv att plugga fram till dess. Så hinner nog inte lära mig klasser med menyer tillräckligt på denna korta tid, så får nog bli funktioner. Tänkte som sagt om det fanns nåt "lätt", men ändå korrekt sätt att göra det på. Men ska kolla in klassarv och underklasser osv iaf, tack för tipsen.