Video: Object-oriented Programming in 7 minutes | Mosh 2024
Objectgeoriënteerd programmeren is een type computerprogrammering - zoals Java - gebaseerd op het uitgangspunt dat alle programma's in essentie computer-gebaseerde simulaties van echte objecten of abstracte concepten. Bijvoorbeeld:
-
Flight-simulator-programma's proberen het gedrag van echte vliegtuigen na te bootsen.
-
Veel computerspellen zijn simulaties van echte spellen die mensen spelen, zoals honkbal, NASCAR-races en schaken.
-
Zelfs zakelijke programma's kunnen worden beschouwd als simulaties van bedrijfsprocessen, zoals het maken van bestellingen, klantenservice, verzending en facturering.
Objecten zijn programma-entiteiten met bepaalde basiskenmerken:
-
Identiteit: Elk object in een objectgericht programma heeft een -identiteit . Met andere woorden, elk voorkomen van een bepaald type object -een -instantie - kan worden onderscheiden van alle andere exemplaren van hetzelfde type object en van objecten van andere typen.
Elk objectinstantie heeft zijn eigen locatie in het geheugen van de computer. Aldus hebben twee objecten, hoewel ze van hetzelfde type kunnen zijn, hun eigen verschillende geheugenlocaties. Het adres van de startlocatie voor een object biedt een manier om het ene object van het andere te onderscheiden omdat geen twee objecten dezelfde locatie in het geheugen kunnen innemen.
Java behoudt de identiteit van elk object vrijwel voor zichzelf. Met andere woorden, er is geen gemakkelijke manier om het geheugenadres van een object te krijgen; Java komt tot de conclusie dat het geen zaak van je is, en terecht. Als Java die informatie voor u beschikbaar zou hebben gemaakt, zou u geneigd zijn om ermee te sleutelen, wat allerlei problemen zou kunnen veroorzaken, zoals elke C of C ++ -programmeur u kan vertellen.
Java-objecten hebben iets dat een hash-code wordt genoemd, , wat een int-waarde is die automatisch wordt gegenereerd voor elk object en bijna vertegenwoordigt de identiteit van het object. In de meeste gevallen is de hash-code voor een object gebaseerd op het geheugenadres van het object, maar niet altijd. Java garandeert niet dat twee verschillende objecten niet dezelfde hash-code hebben.
Wanneer gebruikt met objecten, test de gelijkheidsoperator (==) in feite de objectidentiteit van twee variabelen of uitdrukkingen. Als ze naar dezelfde objectinstantie verwijzen, worden de twee variabelen of uitdrukkingen als gelijk beschouwd.
-
Type: Met objectgeoriënteerd programmeren kunt u namen toewijzen aan de verschillende soorten objecten in een programma. In Java definiëren klassen typen. Daarom, wanneer u een object van een type maakt, zegt u dat het object van het type is dat door de klasse is opgegeven.In de volgende voorbeeldinstructie wordt een object van het type Factuur gemaakt:
Factuur i = nieuwe factuur ();
In dit geval wordt de identiteit van dit object (dat wil zeggen, het adres in het geheugen) toegewezen aan de variabele i, waarvan de compiler weet dat deze verwijzingen naar objecten van het type Factuur kan bevatten.
-
Staat: Hoewel elke instantie van een bepaald objecttype dezelfde kenmerken heeft, heeft elke instantie een andere status: een andere combinatie van waarden voor elk van de kenmerken.
Hoewel sommige kenmerken van een object openbaar zijn, kunnen andere privé zijn. De privékenmerken kunnen van vitaal belang zijn voor de interne werking van het object, maar niemand buiten het object weet dat deze bestaat. Ze zijn als je privégedachten: ze beïnvloeden wat je zegt en doet, maar niemand kent ze behalve jij.
-
Gedrag: Een ander kenmerk van objecten is dat ze gedrag hebben, wat betekent dat ze dingen kunnen doen. Netto staat, hangt het specifieke gedrag van een object af van het type. In tegenstelling tot de staat is gedrag echter niet verschillend voor elk exemplaar van een type.
Stel dat alle studenten in een klaslokaal rekenmachines van hetzelfde type hebben. Vraag ze allemaal om de rekenmachines uit te trekken en twee nummers toe te voegen. Alle rekenmachines geven een ander nummer weer, maar ze voegen allemaal op dezelfde manier toe; dat wil zeggen, ze hebben allemaal een andere staat maar hetzelfde gedrag.
Een andere manier om te zeggen dat objecten gedrag vertonen, is te zeggen dat ze services bieden die door andere objecten kunnen worden gebruikt. U hebt waarschijnlijk al veel voorbeelden gezien van objecten die services leveren aan andere objecten. Objecten gemaakt met de klasse NumberFormat bieden bijvoorbeeld opmaakservices waarmee numerieke waarden worden omgezet in mooi opgemaakte tekenreeksen, zoals $ 32. 95.
In Java wordt het gedrag van een object geleverd door zijn methoden. De opmaakmethode van de NumberFormat-klasse is dus wat het opmaakgedrag biedt voor NumberFormat-objecten.