# Programmeren in Java/Introductie in klassen

Zoals eerder vermeld in dit boek is Java een objectgeoriënteerde programmeertaal. Net zoals in de echte wereld kun je in een objectgeoriënteerde programmeertaal objecten hebben die je kunt omschrijven en gebruiken. In de echte wereld heb je bijvoorbeeld dieren. Dieren hebben namen, ze hebben een bepaalde kleur vacht, sommige kunnen vliegen, andere kunnen zwemmen enzoverder. Maar je kunt ook meer abstractere zaken omschrijven in een objectgeoriënteerde programmeertaal, zoals een databaseconnectie. Een databaseconnectie maakt een connectie met een database op een bepaalde locatie, maakt een verbinding met de database en kan die verbreken, er kunnen gegevens gestuurd worden naar de databank en gegevens opgehaald, enzoverder.

## Inleiding

Het object in programmeren kun je dus vergelijken met een object in het echte leven, neem nu volgende foto.
Hoe zou je dit noemen? Net zoals in de echte wereld kun je een naam geven aan een type object. In dit geval een Auto of Car in het Engels.
Kun je dit object omschrijven? Deze Car heeft een kleur, gebruikt een soort brandstof, heeft een soort versnellingsbak, heeft een nummerplaat, enzoverder. Deze worden de eigenschappen van een object genoemd.
Wat doet dit object? Deze Car kan rijden, kan remmen, kan ramen open en dicht doen, enzoverder. Dit zijn de functionaliteiten van deze Auto. Deze worden methodes genoemd.
Een object heeft dus bepaalde eigenschappen en methodes.

## Eigenschappen

Eigenschappen (properties in het Engels), ook wel velden genoemd, bevatten informatie over het object. Informatie die onder andere het object kunnen omschrijven, identificeren of ook de functionaliteit van de auto beïnvloeden.
Bij Car kan bijvoorbeeld kleur de kleur van een auto omschrijven, de nummerplaat kan helpen de auto identificeren en het type versnellingsbak kan bijvoorbeeld de functionalteit van rijden beïnvloeden.

## Methodes

Methodes geven functionaliteit aan de klasse. Bij Car is dat dus bijvoorbeeld de auto laten rijden, de auto laten remmen enzoverder.
Ook zijn er methodes die getters en setters worden genoemd. Die zijn verantwoordelijk om gegevens op te halen van een object en gegevens te sturen naar een object zodat het object die kan bewaren. Dit heeft niet echt rechtstreeks iets te maken met functionaliteit, maar hier komen we later nog op terug.

## De klasse

Als je de eigenschappen en de methodes samen neemt, kun je dit samenvoegen om een klasse te maken. Een klasse is te vergelijken met een blauwdruk. Je kunt hierin in grote lijnen een Car omschrijven zonder in detail te gaan. Dit wil zeggen dat je kunt zeggen dat een auto een kleur heeft of een type versnellingsbak, zonder te zeggen welke kleur of type.

## Het object

Het object is een instantie van een klasse, dit wil zeggen dat als een klasse Car een blauwdruk is van een auto dan is een object een echte auto die je kunt gebruiken. De klasse Car omschrijft dat de auto een kleur heeft, een object van de klasse Car heeft als kleur rood. Of de klasse Car heeft een functionaliteit die bepaalt hoe een auto rijdt, bij een object zal de de functionaliteit rijden de auto laten rijden.
Klasse versus object :
| Klasse | Object |
| een auto heeft een kleur | de auto is rood |
| een auto heeft een type versnellingsbak | de auto heeft een manuele versnellingsbak |
| een auto kan rijden | de auto rijdt |
| een auto kan remmen | de auto remt |