ok, takže pokus o ukázkový program - snažil som sa ho komentovať čo najviac, snáď je to pochopiteľné... ak nie, tak sa pýtajte...
lepšie to popísať nedokážem, moje pedagogicke schopnosti boli vždy dosť biedne...
- snažil som sa ukázať vytvorenie objektov
- krížové volanie objektov (vodič nastupuje do traktora, získame meno vodiča traktora)
- vytvorenie objektu v inej metóde ako je Main() - narodenie potomka pre objekt typu Clovek
- ukážku ako sa môžu rôzne správať 2 objekty 1 typu - ako majú iné hodnoty - podobne ako napr. pre dátový typ int, string ap.
- ukážku, že sa dá použiť if, for, ai. v akejkoľvek metóde (dokonca aj v iných členoch triedy, ale to neskôr)
using System;
namespace Traktor {
public class Program {
/**
* metoda Main() - vola sa len raz v programe - automaticky sa spusta pri starte programu
*/
public static void Main() {
/**
* vytvorime objekt typu clovek
* nastavime mu parametre
*/
Clovek jano = new Clovek("jano", 45);
/**
* teraz vytvorime viacero traktorov
* pre predstavu kazdy traktor je rovnaky (seriova vyroba) - len maju inu farbu
*/
Traktor cervenyTraktor = new Traktor("cerveny");
Traktor modryTraktor = new Traktor("modry");
/**
* teraz jano nastupi na cerveny traktor
*/
jano.NastupDoTraktora(cervenyTraktor);
// v metode NastupDoTraktora je pouzity keyword this - to znamena, ze sa tam pouzije konkretny objekt, pre ktory je metoda volana - v nasom pripade je to objekt "jano"
/**
* nechame si vypisat, kto je vodicom ktoreho traktora
*/
Console.WriteLine("vodicom cerveneho traktora je: " + cervenyTraktor.MenoVodica());
Console.WriteLine("vodicom modreho traktora je: " + modryTraktor.MenoVodica());
/**
* a teraz sa obe traktory pokusia prejst 5km.
*/
cervenyTraktor.Prejdi(5);
modryTraktor.Prejdi(5);
/**
* a este ukazka vytvorenia objektu v inej metode ako je Main()
*/
Clovek decko = jano.NarodeniePotomka("jozo");
Console.WriteLine("potomok sa vola: " + decko.Meno());
// caka na stlacenie klavesy pred ukoncenim
Console.ReadKey();
}
}
/**
* trieda clovek drzi info a sposob spravania sa cloveka
*/
public class Clovek {
string meno;
int vek;
/**
* konstruktor - da sa predstavit ako zaregistrovanie cloveka do nejakej databazy
* ma 2 parametre - meno a vek
*/
public Clovek(string meno, int vek) {
// this znamena, ze ide o objekt, s ktorym pracujeme - tj. ktoreho konkretne sa volanie danej metody tyka
this.meno = meno;
this.vek = vek;
}
/**
* tento clovek nastupi do traktora, ktory prevezme ako parameter
*/
public void NastupDoTraktora(Traktor trak) {
trak.NastavVodica(this);
}
/**
* zistenie mena cloveka
*/
public string Meno() {
return this.meno;
}
/**
* clovek ma potomka - ukazka, ze je mozne vytvorit objekt aj v inom objekte, ako je hlavny - tj. v inej metode ako je Main()
* samozrejme, potomok ma meno, a vek 0
*/
public Clovek NarodeniePotomka(string meno) {
Clovek potomok = new Clovek(meno, 0);
return potomok;
}
}
/**
* trieda traktor zase ma info o traktore a o tom ako sa sprava on
*/
public class Traktor {
string farba;
Clovek vodic;
/**
* konstruktor - da sa to predstavit si ako napr. vyrobenie traktora v tovarni
* v principe vieme, ze vsetky traktory su rovnake (preto kazdy traktor bude instanciou tejto triedy)
* lisia sa len vo farbe - tu nastavime "pri vyrobe" - preberie sa ako parameter
* po vyjdeni z tovarne traktor je logicky bez vodica
*/
public Traktor(string farba) {
this.farba = farba;
this.vodic = null;
}
/**
* nejaky clovek nastupil do traktora a stal sa jeho vodicom - konkretne, ktory clovek to bol, preberieme ako parameter
*/
public void NastavVodica(Clovek vodic) {
this.vodic = vodic;
}
/**
* chceme zistit, kto je vodicom tohto traktora
*/
public string MenoVodica() {
if (this.vodic == null)
return "tento traktor zatial nema vodica";
return this.vodic.Meno();
}
/**
* traktor ide ku nejakemu cielu
* parametrom udame ako daleko je ciel
*/
public void Prejdi(int vzdialenost) {
if (this.vodic == null) {
Console.WriteLine("traktor nema vodica - bez vodica sa nemoze hybat.");
return;
}
// cyklus - uplne klasicke pouzitie
for (int i = 0; i < vzdialenost; i++) {
Console.WriteLine("traktor zatial presiel vzdialenost " + i + " km.");
}
Console.WriteLine("traktor je v cieli.");
}
}
}
odporúčam skopírovať do nejakého editora, kde budete mať syntax highlighting :)
a ideálne si to aj vyskúšať (napísal som to cez MS Visual C# 2008 Express Ed.) - s kompilovaním by nemal byť problém