IT Basics2Handout9.9.2008u.16.9.2008 FürdasErstellenvonobjektorientiertenProgrammenistesnebendemVerständnisder Objektorientierungauchnötig,einigegrundlegendeKonzeptederProgrammierungzuverstehen. DiesegrundlegendenKonzeptesindThemaderzweitenLehrveranstaltungundteilweiseauchder drittenlehrveranstaltung. EinengutenundausführlichenÜberblickzudenThemengibtdasKapitel2in http://openbook.galileocomputing.de/visual_csharp/ Variablen VariablenbietendieMöglichkeiteinzelneWertezuspeichern.Siemüssendeklariertund initialisiertwerden.beiderdeklerationwirdderspeicherbereichfürdievariablereserviert.es gibtsyntaxkonventionenwienamenvonvariablenaufgebautseinmüssen.siemüssen alphanumerischsein,dürfenkeinesonderzeichen(#,,$)beinhalten;daszeichen_istallerdings erlaubt.siemüssenmitbuchstabenoder_anfangen.nur_istnichterlaubt.siemüsseneindeutig sein(esdarfalsokeinezweigleichenvariablennamengeben)undsiedürfennichtwieein Schlüsselwortbenanntwerden. Datentypen VariablenkönnenZahlen,ZeichenkettenoderlogischeAusdrückebeinhalten.Datentypenhaben einenbestimmtenwertebereich.wirddieserüberschritten(durchz.b.einemathematische Operation)kommteszueinemFehlerunddasProgrammstürztu.U.ab.DieEinhaltungder Wertebereichemusssichergestelltwerden.DiewichtigstenDatentypenmitIhremWertebereich sind: byte:0 255 int: 2 31 2 31 1 float:1,4*10 45 bis3,4*10 38 doule:5,0*10 324 bis1,7*10 308 string:zeichenkette boolean:true/false DatentypenkönnenunterEinhaltungdesWertebereichesimplizit(automatisch)konvertiert werdenweilderwertebereichdabeinichtverletztwerdenkann:byte >int >float >double.in eineandererichtungkannmannurdannzuweisenwennmandiesexplizitangibt.daskannman durchangabedestypsin(). int a = 10; double c = a; a = (int)c MankannauchConvert.<Methode>benutzen.Damitistesmöglichz.B.eineZeichenketteineinen intzuwandeln. string a = 10 ; int b = 0 b = Convert.ToInt32(a)
Felder WillmanmehrereWerteverwaltensobietensichvorerstFelder(Arrays)an.EinFeldhateinefixe Größe,diebeiderInitialisierungangegebenwird.BeiderDeklerationgibtman[]anumzu markieren,dassdieseinfeldist. int[] feld; feld = new feld[3]; NunkannmanaufdieeinzelnenWerteimFeldübereinenfortlaufendenIndexzugreifendermit0 beginnt. feld[1] = 3; MankanndieDeklerationunddieInitialisierungauchineinerZeileschreibenwobeiWertediein geschriebenwerdendirektzugewiesenwerden.mankannentwederdiegrößedesarraysangeben oderdurchdieanzahlderwerteinbestimmenlassen. int[] feld1 = new int[3]1,2,3; int[] feld2 = new int[]1,2,3; FelderkönnenfüralleDatentypebenutztwerden. Bedingungen BedingteVerzweigungendienendazu,denAblaufineinemProgrammzubeeinflussen.Zentral dabeisindboolscheausdrückeüberdieentschiedenwird,welcherzweigdurchlaufenwird. Dasif KonstruktbietetdieMöglichkeitanhandeinesboolschenAusdruckeszuentscheidenwelcher Codeabschnittbenutztwird. if ( boolscher-ausdruck ).. else.. MussmanzwischenmehrerenWertenunterscheidenkannmandasswitch Konstruktbenutzen. switch (variable) case Wert1: case Wert2: default: Jede,caseAbschnittindemeinProgrammcodestehtmussmiteinembreakbeendetwerden.Es wirdvonobenbeginnenddiewerteausgewertet.solltekeinwertübereinstimmen,sowirdder defaultzweigausgewählt.
Schleifen InmanchenFällenistesnotwendignichtnurverschiedeneZweigederVerarbeitungauszuwählen sonderngewisseabschnitteimquellcodezuwiederholen.dazugibtesdreiverschiedenenarten vonschleifen. Diefor Schleifebenutztmandann,wennmanvonvornhereinweißwieoftmaneinenTeil wiederholenmöchte. for (Start;Bedingung;Increment) StartdientdazudieSchleifezuinitialisierenundwirdnuramAnfangausgeführt.DieSchleifewird solangewiederholt,solangedieangegebenebedingung(boolscherausdruck)erfülltist.daswird vorjedemschleifendurchlaufgeprüft.incrementwirdoftdazuverwendetdenschleifenzählerzu erhöhen.daswirnachjedemdurchlaufausgeführt. for(int index=0;index<10;index++) Console.WriteLine(index); Möchtemanz.B.Feld(späterwerdenwirnochandereDatenstrukturenkennenlernen) durchlaufensobietetsichdieforeach Schleifean.DabeiwerdenalleWerteindemFelddurchlaufen undsteheninderschleifealsvariablezuverfügung. foreach (type var1 in var2) TypedefiniertdenbenutztenDatentyp,var1dieVariablediedeneinzelnenWertimFeld beinhaltetundvar2istdievariablediedasfeldbeinhaltet. int[] feld2 = new int[]1,2,3; for(int wert in feld2) Console.WriteLine(wert); DieletztederfürunswichtigenSchleifenistdiewhileSchleife.Diesewirdbenutztwennmandie WiederholungdesAbschnittesaneineallgemeineBedingungbindenmöchteundnichtgenauweiss wieoftdieschleifewiederholtwerdensoll. while (Bedingung) SolangedieBedingungerfülltistwirddieSchleifewiederholt. Übungsaufgaben 1. ErstellenSieeineAnwendungdiedenarithmetischenMittelwerteinesArraysbestehend ausintwertenberechnetundaufderconsoleausgibt. 2. ErstellenSieeineAnwendungdiegrößteunddieKleinsteZahlineinemArraybestehendaus intwertensuchtundaufderconsoleausgibt. 3. ErstellenSieeineAnwendungdieüberprüftobineinemArraybestehendausintWerten mindesteneinwertemehralseinmalvorkommt.siesollausgebenobundwelcherwert mehralseinmalvorkommt. 4. SchreibenSieeineAnwendungdiedengrößtenTeilereinerZahlausgibt.BenutzenSiedabei z.b.den%operator.
KlassenundObjekte ImLaufederVorlesungwerdenwirunsnochausführlichmitdenBegriffenKlasseundObjekt beschäftigen.dieersteauseinandersetzungmitdenbegriffenistanrealexistierendedinge angelehnt,dadiesebekanntunddeswegenauchleichteranalysierbarsind.wirgehenamanfang auchnochnichtaufalledetailseinsondernzuerstbeschäftigenwirunsmitdemwesenvon KlassenundObjekten. EineKlassekannwieeinBauplan,eineVorlageverstandenwerden.Siebeschreibtwelche EigenschaftenetwashatundwelcheAktionen/Vorgängeetwasdurchführenkann.Die EigenschaftenwerdeninVariablenderKlassebeschriebendieAktioneninMethoden.EinAutohat z.beinefarbe,eineaktuellegeschwindigkeitusw.daswärendieeigenschaften.eskann beschleunigen,abbiegen,bremsenusw.daswärendieaktionen.diesehabenimmereine AuswirkungaufdieEigenschaften.BeimBeschleunigenverändertsichz.B.dieaktuelle Geschwindigkeit. AuseinerKlassekannmannuneinkonkretesObjektmachen.DasObjekthatnunkonkreteWerte fürz.b.diegeschwindigkeitoderdiefarbe.hatmanz.b.einautomodelliertdannkannmanein ObjekterstellendaseinrotesAutomitderaktuellenGeschwindigkeit0beschreibt. ManchmalsollendieEigenschafteneinerKlassenichtveränderbarseinaberabgefragtwerden könnenz.b.diematrikelnummereinesstudierenden.indiesemfallmussmansicherstellen,dass beimerstellendesobjektesdiesewertegesetztwerdenundvonaußennurlesbarsind. KlasseninC# AlldieseAspektevonKlassenlassensichinC#realisieren.DieEigenschaftenkannmanmit VariablendieinnerhalbderKlassedeklariertwerdenumsetztenwieimBeispieldieVariablen breiteundhoehe. DieAktionensindinMethodenUmgesetztwieimBeispieldieMethodeberechneFlaeche()unddas InitialisierenvonVariablenbeimerstellenderKlasseistüberdenKonstruktorgelöst.Der KonstruktoristeinespezielleMethodediebeimErstelleneinesObjektesaufgerufenwird.Erheißt immergleichwiedieklasse. class Rechteck private double breite; private double hoehe; public Rechteck(double h, double b) breite = b; hoehe = h; public double berechneflaeche() return breite* hoehe; public void skalieren(double f) breite = breite * f; hoehe = hoehe * f;
GehenwirnunkurzaufdieeinzelnenTeilenocheinmalgenauerein.DieVariablenbreiteund hoehesindalsprivatmarkiert,dasheißtvonaußensinddiesenichtsichtbar.siekönnenaberin MethodenderKlasse(wiez.B.berechneFlaeche)benutztwerden.Nebenprivategibtesauchpublic. DadieseSchlüsselwortedenZugriffsteuern,gehörensieindieGruppederAccess Modifier. MethodenbildendieAktioneneinerKlasseabundihreDefinitionbeginntauchmiteinemAccess Modifier.DanachmussangegebenwerdenobdieMethodeeinErgebniszurückliefert(Datentyp) odernicht(void).wenneinwertzurückgegebenwirdsobenutztmandasschlüsselwortreturn. DieMethodemussweiterseinenNamenbekommen(z.B.berechneFlaeche).InrundenKlammern werdenparameterdefiniertdieandiemethodeübergebenwerdenkönnen.dasmussabernicht sein.esistoftderfall,dasskeineparameterübergebenwerden.willmanaberwerteübergeben (sieheskaliere(doublef))mussmanzuerstdendatentypangebenunddanndennamender VariablendieinnerhalbderMethodedenWertbeinhaltensoll. ObjekteundReferenzeninC# UmnunauseinerKlasseeinkonkretesObjektzuerzeugenbenötigtmanzuersteineVariabledie vontypderklasseistunddanachmussmaneinneuesobjektmitdemschlüsselwortnew erzeugen.dabeiwirdderkonstruktoraufgerufenunddiewertefürdieinitialisierungdesobjektes übergeben. Rechteck r1; // Dekleration r1= new Rechteck(10.0, 20.0); Rechteck r2: r2=r1; r1undr2werdenalsreferenzenbezeichnet.eskannsein,dasszweireferenzvariablenaufeinund dasselbeobjektzeigen.imbeispielwirdz.b.nureinmaleinobjektmitnewangelegtaberr1und r2zeigenaufdasselbeobjekt.verändertmandiesesz.b.durchdenaufrufvonskaliere,sokönnen dieauswirkungensowohlüberr1alsauchüberr2beobachtetwerden. ReferenzenkönnennatürlichauchwieandereVariableninFeldernundauchinforeachSchleifen benutztwerden. Rechteck[] rechtecke = new Rechteck[] new Rechteck(2,3), new Rechteck(3,4); foreach (Rechteck r in rechtecke) Console.WriteLine(r.berechneFlaeche()); Übungsbeispiele 1. ImplementierenSieeineKlaseStudent.DieMatrikelnummersollbeimInstanzierengesetzt werden,vor undnachnameübereigenemethoden.schreibensieaucheinemethode,die InformationenzumStudentenalsStringzurückgibt(Matrikelnummer:Vorname Nachname). 2. ImplementierenSieeineKlasseBestellzeiledieeinenProduktnamen,einenProduktpreis undeineanzahlverwaltenkann.siesollauchdensummenpreisundinformationenzur Bestellzeile(Name,Anzahl,Preis,Summe)ausgebenkönnen.ErstellenSieeinFeldvon solchenbestellzeilenundberechnensiediegesamtsummeallerbestellzeilen.