Commit f0518b61 authored by Uwe Wienkop's avatar Uwe Wienkop

2019-12-03 Di (enums, Klasse Fahrzeug)

parent 746964e2
......@@ -32,11 +32,8 @@ namespace _08Dojo_Bruch
return new Bruch(b1.zaehler * b2.zaehler, b1.nenner * b2.nenner);
}
public static Bruch operator*(Bruch b1, Bruch b2)
{
//zaehler = zaehler * b2.zaehler;
//nenner = nenner * b2.nenner;
return new Bruch(b1.zaehler * b2.zaehler, b1.nenner * b2.nenner);
}
=> new Bruch(b1.zaehler * b2.zaehler, b1.nenner * b2.nenner);
public override string ToString()
{
......
......@@ -16,15 +16,16 @@ namespace _09CodeDojo_Klasse
// - Alle Fahrzeuge des Feldes ausgibt
class Fahrzeug
{
string kennzeichen;
int erstzulassung, id;
// string kennzeichen; Alternativ:
public string Kennzeichen { get; set; }
readonly int erstzulassung, id;
static int naechsteId = 1000; // static D.F. ==> nur einmal pro Klasse
public Fahrzeug (string Kennzeichen, int Erstzulassung)
public Fahrzeug(string Kennzeichen, int Erstzulassung)
{
kennzeichen = Kennzeichen;
erstzulassung = Erstzulassung;
id = naechsteId++ ;
this.Kennzeichen = Kennzeichen;
this.erstzulassung = Erstzulassung;
id = naechsteId++;
}
public static void SetzeNaechsteId(int wert)
{
......@@ -39,6 +40,15 @@ namespace _09CodeDojo_Klasse
naechsteId = value;
}
}
//public string Kennzeichen
//{
// get => kennzeichen;
// set { kennzeichen = value; }
//}
public override string ToString()
{
return $"Kennzeichen: {Kennzeichen}, Erstzulassung: {erstzulassung}, Id: {id}";
}
}
class Program
{
......@@ -46,10 +56,22 @@ namespace _09CodeDojo_Klasse
{
Fahrzeug.SetzeNaechsteId(1000000);
Fahrzeug.SetzeNaechsteId2 = 1000000;
// Console.WriteLine(Fahrzeug.SetzeNaechsteId2); -- geht nicht, da get fehlt!
Fahrzeug fz1 = new Fahrzeug("N-AB 512", 2010);
Fahrzeug fz2 = new Fahrzeug("N-SY 112", 2015);
Fahrzeug[] fahrzeuge = new Fahrzeug[3];
fahrzeuge[0] = fz1;
fahrzeuge[1] = fz2;
fahrzeuge[2] = new Fahrzeug("LAU-XY 513", 2014);
fahrzeuge[2].Kennzeichen = "FÜ-XY 513";
fz1.Kennzeichen = "AN-AB 512";
fahrzeuge[0].Kennzeichen = "AN-AB 512";
foreach (Fahrzeug f in fahrzeuge)
{
Console.WriteLine(f);
}
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<RootNamespace>_09Enums</RootNamespace>
</PropertyGroup>
</Project>
using System;
namespace _09Enums
{
enum Ampelfarben2 { rot, gelb, grün}
class Kreuzung
{
public enum Ampelfarben3 { rot,gelb,grün};
// public ist hier wichtig, damit Ampelfarben3 auch im
// Konstruktor erlaubt ist (Achtung: Ohne Angabe von public folgt
// Enum Ampelfarben3 ist private!
// Richtig:
Ampelfarben2[] ampeln = new Ampelfarben2[4];
public Kreuzung (Ampelfarben2 af2, Ampelfarben3 af3)
{ }
enum Ampel { rot, gelb, grün};
Ampel a1, a2;
}
class Program
{
enum Ampelfarben { rot, gelb, grün}
// Enum ~ definiert einen neuen Datentyp. Dieser kann überall verwendet
// werden, wo sonst auch ein Typ, wie int oder eine Klasse vorkommt
// Enum ~ Aufzähltyp, genauer: Ein Untertyp von int
// Die Konstanten werden immer zusammen mit dem Typ verwendet,
// da Werte in mehreren Kontexten vorkommen können
// (z.B. Ampel-rot, Bildschirm-rot)
// Enum legt keine Variablen automatisch an, d.h.
// enum Ampel { rot, gelb, grün};
// legt nicht automatisch auch eine Variable vom Typ Ampel an!
// D.h. sorgfältig den Namen auswählen
static Ampelfarben naechsteFarbe(Ampelfarben ampelfarbe)
{
if (ampelfarbe == Ampelfarben.grün)
return Ampelfarben.gelb;
else if (ampelfarbe == Ampelfarben.gelb)
return Ampelfarben.rot;
else
return Ampelfarben.grün;
}
static void Main(string[] args)
{
Ampelfarben a = Ampelfarben.rot;
Console.WriteLine(a);
int x = (int) a;
x++;
a = (Ampelfarben) x;
Console.WriteLine(a);
Console.WriteLine((Ampelfarben) (a+2));
Kreuzung k = new Kreuzung(Ampelfarben2.rot, Kreuzung.Ampelfarben3.gelb);
// Ampelfarben2 ~ außerhalb der Klassen --> gleiche Hierarchiestufe wie die Klassen
// Ampelfarben3 ~ innerhalb der Klasse Kreuzung --> der Aufruf muss den Klassennamen
// beinhalten, also Kreuzung.Ampelfarben3.gelb
}
}
}
......@@ -2,11 +2,35 @@
namespace _09Handy
{
class Handy
{
string telnr;
// Jedes Handy hat seine eigene Nummer
public int Nummer { get; set; }
private int nummer2;
public int Nummer2
{
get { return nummer2; }
}
static int anzDerHandys = 0;
static Handy[] handyFeld = new Handy[1000];
// Die Klasse weiß, wieviele Handys bereits erzeugt wurden
public Handy(string TelNummer)
{
telnr = TelNummer;
handyFeld[anzDerHandys] = this;
anzDerHandys++;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Handy h1 = new Handy("4711");
Handy h2 = new Handy("0815");
}
}
}
......@@ -73,9 +73,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "08TextdateienIntro", "08Tex
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "08ThrowIntro", "08ThrowIntro\08ThrowIntro.csproj", "{952FDB85-9BE4-42CC-841B-91036E380484}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09Handy", "09Handy\09Handy.csproj", "{A41F7BA4-C7C2-4B41-A642-CA4D6E56EC9C}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "09Handy", "09Handy\09Handy.csproj", "{A41F7BA4-C7C2-4B41-A642-CA4D6E56EC9C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09CodeDojo Klasse", "09CodeDojo Klasse\09CodeDojo Klasse.csproj", "{54E2F1F8-FDFA-47A9-BFD6-005DF4ED58D6}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "09CodeDojo Klasse", "09CodeDojo Klasse\09CodeDojo Klasse.csproj", "{54E2F1F8-FDFA-47A9-BFD6-005DF4ED58D6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "09Enums", "09Enums\09Enums.csproj", "{4F3913B1-9129-4FE7-ADEC-780BEA0C2029}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
......@@ -231,6 +233,10 @@ Global
{54E2F1F8-FDFA-47A9-BFD6-005DF4ED58D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{54E2F1F8-FDFA-47A9-BFD6-005DF4ED58D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{54E2F1F8-FDFA-47A9-BFD6-005DF4ED58D6}.Release|Any CPU.Build.0 = Release|Any CPU
{4F3913B1-9129-4FE7-ADEC-780BEA0C2029}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4F3913B1-9129-4FE7-ADEC-780BEA0C2029}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4F3913B1-9129-4FE7-ADEC-780BEA0C2029}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4F3913B1-9129-4FE7-ADEC-780BEA0C2029}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment