Zum Inhalt springen

lilith2k3

Mitglieder
  • Gesamte Inhalte

    1420
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    2

Alle Inhalte von lilith2k3

  1. Dia zeichnet Diagramme gratis - Open Source Programm für Windows, Mac OS X und Linux Was ich noch nicht ganz verstehe .. 1) warum ist "Ausleihe" ein Interface? 2) inwiefern aggregiert ein Praktikant einen Angestellten? 3) warum hast Du eine Klasse "menschliches Individuum" ? So nebenbei "leiht aus" sollte besser "verleihen" heissen, dann irritiert es weniger. Also sagen wir einmal so ... es ist ... äh ... unübersichtlich!?
  2. Indem Du das ganze aufdröselst ... Du baust eine Klasse zur Steuerung der Vorgänge und eine eigene Klasse Artikel, die auch wirklich die Artikel darstellt. Anschließend kannst Du auch Artikel übergeben meineBuchung.meineBuchungen(meinArtikel); ... zumindest in dem Rahmen, den Du hier präsentierst.
  3. Also ich bin jetzt kein Fachmann, aber für mich liest sich das so, dass der generelle Ansatz der prozeduralen Programmierung, ersteinmal nur heißt, dass man ein Problem modularisiert betrachtet; e.g. einen vereinfachten Cola-Automaten: Ein Ansatz (der aber nicht unbedingt "prozedural" wäre), wäre es jetzt quasi alles in eine einzige main-Funktion zu schreiben. Die Übergänge von einem Zustand in einen anderen erfolgen durch einen unbedingten Sprung - in Assembler etwa mittels JMP oder in C mittels goto. Prozedurale Programmierung würde dann zwischen den unterschiedlichen Zuständen genauer differenzieren, so dass quasi jeder Zustand durch eine Prozedur gekennzeichnet wäre: for(; { WarteAufGeldEingang(); PrüfeGeldEingang(); GebeWareAus(); WennNötigGebeWechselGeld(); } [/PHP] Das obige Beispiel dürfte grob gesehen sowohl prozedural, als auch strukturiert durchgehen (einen Automaten würde man anders programmieren, aber für's Beispiel taugt's *g*). Der wesentliche Unterschied, wenn ich das recht verstanden habe, liegt jetzt darin, dass man bspw. darauf verzichtet mittels [i]goto[/i] bspw. im Fehlerfall komplett aus dem Kontext herauszuspringen und an irgendeiner, quasi x-beliebigen Stelle im Programm weiterzumachen. Als unbedingter Sprung erlaubt ist nachwievor [i]break;[/i]. Warum? Weil ein break lediglich den Kontext der aktuellen Schleife verlässt und in die übergeordnete Struktur zurückwechselt, bzw. bei einem switch-Statement wird die Fallunterscheidung verlassen. Eine abgemilderte Form des "goto" im Fehlerfall sind die [i]Exceptions[/i]. Zwar wird auch der aktuelle Kontext verlassen; allerdings ist dies äußerst kontrolliert möglich - Fehlerobjekte können geworfen werden; es kommt zum sog. [i]Stack-Unwinding[/i] etc. Strukturierte Programmierung ist nichts anderes als konsequent angewandte (prozedurale) Programmierung unter Vermeidung von Gotos und Reduktion der elementaren Prozeduren auf kleine bzw. kleinste Kontrollstrukturen/Vorgänge, quasi eine Art Vorläufer des [i]Single Responsibility Principle[/i].
  4. class Program { public enum Stages:int {Start=0, Warenauswahl, Einkaufskorb, Kasse, Bezahlen, Ende} static void Main(string[] args) { ... while (Einkaufsablauf != Stages.Ende) { Menu.PrintMenu(Einkaufsablauf); char Eingabe = Console.ReadKey().KeyChar; Shop.Bearbeite(Eingabe, Einkaufsablauf); } ... } } [/PHP] Wäre ja quasi das, worauf Du hinaus möchtest? Du hast während des Einkaufens verschiedene Stadien, die mit [i]public enum Stages:int {Start=0, Warenauswahl, Einkaufskorb, Kasse, Bezahlen, Ende}[/i] definiert werden. Solange Dein Einkauf noch nicht beendet ist [PHP]while (Einkaufsablauf != Stages.Ende) soll die Menuklasse die passende Ausgabe (Menu.PrintMenu(Einkaufsablauf)) liefern. Und entsprechend der Eingabe und des derzeitigen Zustandes, wird die Anfrage bearbeitet (Shop.Bearbeite(Eingabe, Einkaufsablauf);)
  5. lilith2k3

    Codequalität verbessern

    Clean Code Developer - Clean Code Developer Mit schicken Armbändern
  6. Naja, aber da kann man ja schonmal drauf aufbauen
  7. lilith2k3

    Lizenzen

    Ich persönlich nutze ja die WTFPL .. Nee, aber BSD ist eigentlich das, was mir am ehesten zusagt - aber Du hast Dich ja schon entschieden.
  8. Benutz doch einfach ein DataSet samt Adapter... Oder guck Dir mal Using LINQ to SQL (Part 1) - ScottGu's Blog an...
  9. Genau das ist der Springende Punkt. Da Du am Zahlenwert des Stringelements interessiert bist, und nicht an dessen ASCII-Wert, solltest Du Zahl-'0' benutzen. #include <stdio.h> int StringToInt(char * Zahl); int main() { char *ZahlString="-1234"; int Ergebnis=0; Ergebnis = StringToInt(ZahlString); printf("%d", Ergebnis); } int StringToInt(char *Zahl) { int ZwischenErgebnis=0; bool Negativ = false; if (*Zahl=='-') { Negativ=true; Zahl++; } while(*Zahl!='\0') { ZwischenErgebnis=10*ZwischenErgebnis+(*Zahl-'0'); Zahl++; } if (Negativ) { return -1*(ZwischenErgebnis); } else { return ZwischenErgebnis; } } [/PHP] P.S.: Natürlich gibt es die itoa-Funktion, aber gemeint war ja atoi :]
  10. string com = "Insert Into T_Event (L_ID, E_Date, E_Uhr, U_ID, E_Kommentar, EVS_ID) " + "Values ('" + cb_E_loc.SelectedIndex + "', '" + tb_E_Datum.Text + "', '" + cb_E_Uhrzeit.Text + "', " + mainUser.U_ID + ", '" + tb_E_Kommentar.Text + "', " + cb_E_Status.SelectedIndex + ")";[/PHP] Hat zwar nichts mit dem Thema zu tun... Aber: Warum benutzt Du keinen Formatstring? Ist zum einen effektiver, [PHP] string insertString = string.Format("Insert Into T_Event (L_ID, E_Date, E_Uhr, U_ID, E_Kommentar, EVS_ID) Values ('{0}','{1}','{2}','{3}','{4}','{5}')", cb_E_loc.SelectedIndex, tb_E_Datum.Text, cb_E_Uhrzeit.Text, mainUser.U_ID, tb_E_Kommentar.Text, cb_E_Status.SelectedIndex); und vor allem wird für denjenigen, der Deinen Code später mal lesen soll, schneller ersichtlich, dass es sich um eine Mischung aus einem String und entsprechenden Variablen handelt. Auf einen Blick ist zu erkennen, dass hier 6 Variablen an der Zusammenstellung des Strings beteiligt sind. Wer's noch schöner haben will, kann das Ganze auch mit einem StringBuilder bauen und so für jede Variable, die im String landet, eine Zeile mit dem StringBuilder (Methode: AppendFormat) hinzufügen.
  11. Wieso? Hört sich an, als hättest Du Zweifel. Kann (fast) jeder Azubi für umme bekommen ... MSDNAA machts möglich ...
  12. Kleiner Tipp: Was ist denn zahl_als_text[i] also bspw. i=0? '1' ist nicht das gleiche wie 1 ... Naja, willkürlich ist es eben nicht Die gibt es nicht, zumindest nicht im Standard. Bestimmt meinst Du die atoi Funktion.
  13. Ich würde es nicht brennen, sondern direkt vom .ISO aus installieren ... Wozu extra einen Rohling vergeuden?
  14. Wie schon erwähnt, handelt es sich bei einem delegate um soetwas wie einen Funktionszeiger unter C++, i.e. eine Verwaltungsstruktur, die Verweise auf Funktionen behandelt. public delegate Rückgabetyp DelegatName(Argumentenliste); Das heißt nichts anderes als das ein delegate mit dem Namen DelegatName existiert, welches quasi soetwas wie ein Zeiger auf eine Funktion darstellt, die als Rückgabetypen den angegebenen enthält und gleichzeitig eine Argumentenliste gleich der, welche im Delegat angegeben worden ist, entsprechen muss. (Kovarianz und Kontravarianz lasse ich einmal aussen vor; es soll ja noch verständlich bleiben *g*). Man sagt auch, dass die Signatur übereinstimmen muss. Wenn ich das Beispiel einmal aufgreife: public delegate void del_GibTextZurueck(string ausgabe); So ist an der Stelle ein delegate definiert worden, auf welches Funktionen mit dem Rückgabetyp void und dem Parameter string passen. Jedes Objekt, welches beim Auftauchen des Events benachrichtigt werden möchte, trägt sich unter public event del_GibTextZurueck GibTextZurueck; dem event ein. Das delegate gibt die Struktur vor, wie die Funktionen aussehen dürfen, die sich registrieren dürfen: Also alle Funktionen mit void und string, e.g. void frm_GibTextZurueck(string ausgabe) { txtStringAusForm2.Text = ausgabe; }[/PHP] Da Du Deine Events frei gestalten kannst, bleibt es Dir auch überlassen, welcher Art Deine Funktionen sind.Beliebt ist meist [PHP]delegate void EventHandler(object sender, EventArgs e);. Dann übergibt doch einfach Dein Objekt; Du musst nur den Parameter in dem delegate entsprechend abändern.
  15. Aber was ein Stack ist, was Pointer sind etc. das weist Du schon?
  16. Nein, wissen müssen, muss man nix Aber es ist schon grundlegend zu verstehen, was ein Value-Type und was ein Reference-Type ist, und wie sich beide auch im Hinblick auf Performance unterscheiden. Ebenso ist es hilfreich zu wissen, was es mit Boxing und Unboxing auf sich hat; oder weshalb man beispielsweise einen Stringbuilder benutzen sollte. Das sind zwar Sachen, die am Anfang eher müssig erscheinen mögen, aber immens wichtig. Ausprobieren ist die beste Übung. Überleg Dir mögliche Anwendungen und probier Dein gerade erworbenes Wissen einfach aus. Jo! Nicht abschrecken lassen. Üben Üben Üben! Lesen Lesen Lesen! Sitzfleisch zahlt sich letztlich aus.
  17. Entschuldige! Ich habe nicht erwartet, dass Du Dich durch meine Anfrage derart provoziert siehst. Es ging mir ganz wertneutral darum, die Motivation zu erfragen.
  18. Warum genau dieser komische Weg?
  19. lilith2k3

    for schleife c#

    Bitte die Code-Tags benutzen, danke ... :]
  20. Hat das einen besonderen Grund?
  21. Magst Du uns auch ein wenig an Deinem Code teilhaben lassen? Das würde uns die Sache leichter machen, zu verstehen, was Du willst :]
  22. Was der TO draus macht, bleibt ihm überlassen. Es ist ein Angebot, mehr nicht. Wenn er es bloß kopiert, sein Problem. Und ich wüsste auch nicht, was ich hier kommentieren sollte. Die Semantik ist klar. Wenn es Probleme mit der Syntax gibt, kann der TO gerne nachfragen.
  23. Dem TO?
  24. #include <stdio.h> int main() { const int maxStringLen = 100; const int stringEnde = '\0'; const int leerZeichen= ' '; const int enter= '\n'; char string[maxStringLen]; char *pointer; fputs("Bitte geben Sie eine Zeichenkette ein!\n", stdout); fgets(string, maxStringLen, stdin); pointer=string; while (*pointer != stringEnde) { if (*pointer == leerZeichen) { fputc(enter, stdout); pointer++; continue; } fputc((int)*pointer, stdout); pointer++; } }[/PHP]
  25. Äh, das wird nicht reichen

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...