Reactie plaatsen 
 
Waardering:
  • 0 stemmen - gemiddelde waardering is 0
  • 1
  • 2
  • 3
  • 4
  • 5
Basisbegrippen OOP icm C# Deel 1
Auteur Bericht
Kevv Offline
Posting Freak
*****

Berichten: 2.590
Lid sinds: 08-2006
Reputatie: 29
Bericht: #1
Basisbegrippen OOP icm C# Deel 1
Basisbegrippen OOP icm C# Deel 1

Inleiding
Op school behandelen wij op dit moment een aantal basis beginselen van het object georiënteerd programmeren. Tijdens een college heb ik een aantal basisbegrippen op papier gezet, en leek het me handig om die met jullie te delen.
De tutorial is door een mij, beginnend OOP`er (in combinatie met C#), geschreven, en ik zal dus ook proberen om niet te moeilijke vaktermen te gebruiken.
In deze tutorial maak ik veel gebruik van een voorbeeld “auto”. Een auto heeft verschillende eigenschappen, en een aantal functies, en is daardoor handig om als voorbeeld te gebruiken.

In eerste instantie gebruikte ik deze tutorial alleen als naslagwerk voor mijzelf, uiteindelijk toch maar besloten om het te delen.

Wat is OOP in het kort?
OOP is een afkorting van Object Orientated Programming, oftewel: Object georiënteerd programmeren, en is de nieuwste manier van programmeren. Voorgangers van object georiënteerd programmeren zijn lineair of proceduregericht programmeren.

De bedoeling van OOP is het zo goedkoop en makkelijk onderhoudbaar mogelijk ontwikkelen van programmacode, waarbij de bestaande code zo makkelijk mogelijk te hergebruiken is.
Tegenwoordig zijn alle “moderne” programmeertalen object-georiënteerd.

1. Class(Klasse)
Allereerst begin ik met een class, oftewel klasse. Een klasse is een sjabloon waarvan objecten gemaakt kunnen worden.

Een class maak je op de volgende manier:
Code CSHARP :
class Auto
{
//De inhoud van een class
}

2. Object
Een object is een “kopie” van een class.
Voorbeeld(1): Je eigen auto is een object van de class auto, maar die van een kennis is ook een object. Toch zijn ze allebei verschillend.

Een object maak je op de volgende manier:
Code CSHARP :
Auto audi = new Auto();

Je maakt hier een object “audi” aan van het type “Auto”. En krijgt alle eigenschappen van de class Auto. Eventueel kunnen tussen de haakjes een aantal parameters staan.

3. Methode
Een methode is een functie die behoort tot een class, die kan worden aangeroepen in je script.

Een methode maak je op de volgende manier:
Code CSHARP :
public void setMaxSnelheid(int maxSnelh)
{
}

Hierbij MAG “int snelh” hetzelfde zijn als een reeds bestaande variabele, maar dit maakt de code er niet meer leesbaar op, en wordt dus sterk afgeraden.
De betekenis van public en void zal ik later uitleggen.

4. Constructor
Een constructor zorgt ervoor dat een bepaald object aangemaakt wordt.
De constructor heeft dezelfde naam als de class, en er staat geen returnwaarde (int, string, etc.) bij.

Voorbeeld(2):
Code CSHARP :
Auto audi = new Auto();


Hierbij is Auto () de constructor.

5. Private, public of protected?
Bij het maken van variabelen, kun je kiezen voor een aantal verschillende opties.
Je hebt de mogelijkheid om een methode private, public of protected te maken.

Private [Zie voorbeeld 3]
Een private variabele is alleen te gebruiken in de class, en kan niet rechtstreeks worden verandert.
Het wijzigen van een private is mogelijk, maar moet dit gebeuren door middel van een methode in dezelfde class

Public
Dit is het tegenovergestelde van private. De public is van buitenaf te wijzigen, zonder daarvoor een methode te gebruiken. Methodes MOETEN public zijn, anders zijn ze van buitenaf niet te gebruiken.

Protected
Een protected is toegankelijk voor alles en iedereen binnen de class en afgeleiden ervan, maar alle andere dingen worden geweigerd.

Voorbeeld(3):
Zo mag de inhoud van variabele type niet worden verandert, want het is een private variabele
Code CSHARP :
private string maxSnelheid;


Zo mag het wel. De methode is public, en staat in dezelfde class.
Code CSHARP :
public void setMaxSnelheid(int maxSnelh)
{
maxSnelheid = maxSnelh;
}

Om nu de variabele maxSnelheid te veranderen, zou je in je programmacode moeten typen: audi.setMaxSnelheid(150);
“Audi” is het object, welke de methode “setMaxSnelheid” aanroept met de parameter “150”
De variabele maxSnelheid zal nu worden gevuld met het getal (int) 150.
Wat je misschien al opgevallen is, is dat er bij de methode setMaxSnelheid gebruik gemaakt is van “void”. Dit ga ik nu uitleggen.

6. Void, of toch int, string etc. ?
Bij het maken van methodes maak je gebruik van verschillende “datatypes”. Zo kennen wij de standaard datatypes als string, int, bool etc. Maar ook kennen wij “void”.

Void betekend leeg, en is een functie die niets teruggeeft. Een return statement is in een void dus alleen mogelijk ZONDER parameter.
Wil je wel iets returnen MET een parameter, dan moet je gebruik maken van een andere datatype, zoals int. Een public int geeft een integer terug met een return.

Voorbeeld(4):
Code:
public void geefSnelheid()
{
    return snelheid;
}
Zal niet werken. Hier maak je gebruik van een void, én van een return statement. In dit geval zou je moeten gebruiken:
Code CSHARP :
public int geefSnelheid()
{
return snelheid;
}

Slot
Ik hoop dat het principe en de begrippen van OOP icm C# wat duidelijker zijn geworden. Mochten er opmerkingen, vragen, toevoegingen, verbeteringen of wat dan ook zijn, ik hoor ze graag!

Eventueel een deel 2 is op komst (Met bijvoorbeeld de uitleg over "overerving" etc.)
(Dit bericht is het laatst bewerkt op 18-04-2008 om 21:56:32 door Kevv.)
18-04-2008 15:05:13
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Gtox Offline
How you doin?
*****

Berichten: 3.850
Lid sinds: 08-2006
Reputatie: 134
Bericht: #2
RE: Basisbegrippen OOP icm C# Deel 1
Thanx handige tut/uitleg, goed samengevat wat we hebben gehad :) ++

- That's right. Cause I'm a Tribbiani!
18-04-2008 15:37:51
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Ikke Offline
De enige echte
******

Berichten: 3.133
Lid sinds: 04-2006
Reputatie: 67
Bericht: #3
RE: Basisbegrippen OOP icm C# Deel 1
Een mooi begin, alleen nog even een opmerking:

Kevv schreef:Een return statement is in een void dus niet mogelijk.

Een return statement is wel mogelijk, alleen accepteert geen 'parameter'.

Dit werkt gewoon:

Code CSHARP :
 
 
public void test(int a)
{
if(a==1)
{
return;
}
}
 

- OOP: Make simple things complex to make complex things simple
- Op deze planeet is stompzinnigheid nu eenmaal overvloediger dan zuurstof.
- The most constant factor of software is change
18-04-2008 15:49:04
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Cuve Afwezig
Netlog Web Developer
*****

Berichten: 5.446
Lid sinds: 04-2006
Reputatie: 151
Bericht: #4
RE: Basisbegrippen OOP icm C# Deel 1
Misschien is het handig om ook "properties" te vermelden. Of hebben jullie die nog niet gezien?
't Is imo ook een basisbegrip, en in C# ook veel gebruikt.

Een propertie is dus een manier om de waarde van een private/public field te zetten/op te halen. In andere OOP-gerichte talen gekent als get-ters en set-ters. Daar moet je een void setField(type Waarde) en een type getField() doen.
In C# kan dit als volgt
Code CSHARP :
 
#region Private Members
private String _merk;
private float _maxSnelheid;
#endregion
 
#region Properties
public String Merk {
get { return _merk; }
set { _merk = value; }
}
 
public int MaximumSnelheid {
get { return _maxSnelheid; }
}
 
#endregion
 

Om een waarde te get-ten (teruggeven) return je gewoon het private member, om hem te set-ten wijs je value toe aan het member.
Vrij duidelijk lijkt me.



Ook handig in C# zijn regions, hiermee groepeer je bepaalde stukken code en kun je ze open en dicht klappen.
En iets handigs in Visual Studio (enkel getest in 2008) is, als je een propertie wilt maken, je dat sneller kunt dan alles typen, zo:
type 'prop' en druk 2 maal tab, dan wordt de propertie gemaakt, en krijgt het stukje waar je het type van de propertie typt de focus en kun je dus snel via de intellisense het type kiezen, druk daarna nogmaals tab en dan krijgt de propertienaam focus.
Vrij handig!
Je kunt uiteraard ook properties van members laten genereren via refactoring mogelijkheden in Visual Studio

(Dit bericht is het laatst bewerkt op 18-04-2008 om 16:34:54 door Cuve.)
18-04-2008 16:34:26
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Kevv Offline
Posting Freak
*****

Berichten: 2.590
Lid sinds: 08-2006
Reputatie: 29
Bericht: #5
RE: Basisbegrippen OOP icm C# Deel 1
Cuve schreef:Misschien is het handig om ook "properties" te vermelden. Of hebben jullie die nog niet gezien?
Dit hebben wij inderdaad nog niet gezien bij onze lessen. Kan het eventueel toch toevoegen aan deze tutorial :)
Ikke schreef:Een return statement is wel mogelijk, alleen accepteert geen 'parameter'.
Heb het aangepast! Bedankt :)
(Dit bericht is het laatst bewerkt op 18-04-2008 om 21:04:59 door Kevv.)
18-04-2008 21:03:56
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Reactie plaatsen 


Ga naar locatie:


Contact opnemen | Ep2 | Naar boven | Naar inhoud | Archiefmodus | RSS-syndicatie