Inhoudsopgave:
Video: Object Georiënteerd programmeren - Polymorphisme 2024
Java is objectgeoriënteerd. Wat betekent dat? In tegenstelling tot talen, zoals FORTRAN, die zich richten op het geven van de computer dwingende "doe dit / doe dat" -opdrachten, richten objectgeoriënteerde talen zich op gegevens. Uiteraard vertellen objectgeoriënteerde programma's nog steeds aan de computer wat te doen. Ze beginnen echter met het organiseren van de gegevens en de opdrachten komen later.
Objectgeoriënteerde talen zijn beter dan "doe dit / doe dat" talen omdat ze gegevens zodanig organiseren dat mensen er allerlei dingen mee kunnen doen. Om de gegevens aan te passen, kunt u bouwen op wat u al hebt, in plaats van alles wat u hebt gedaan te schrappen en opnieuw beginnen elke keer dat u iets nieuws moet doen. Hoewel computerprogrammeurs over het algemeen slimme mensen zijn, hebben ze een tijdje geduurd om dit uit te zoeken.
Objecten en hun klassen
In een objectgeoriënteerde taal gebruikt u de klassen en om uw gegevens te ordenen.
Stel je voor dat je een computerprogramma schrijft om de huizen bij te houden in een nieuwe condominiumontwikkeling (nog in aanbouw). De huizen verschillen slechts weinig van elkaar. Elk huis heeft een opvallende gevelbeplating, een verfkleur binnenshuis, een keukenkaststijl, enzovoort. In uw objectgeoriënteerde computerprogramma is elk huis een object.
Maar objecten zijn niet het hele verhaal. Hoewel de huizen enigszins van elkaar verschillen, delen alle huizen dezelfde lijst met kenmerken. Elk huis heeft bijvoorbeeld een kenmerk dat bekend staat als gevelverfijning. Elk huis heeft een ander kenmerk dat bekend staat als keukenkaststijl. In uw objectgeoriënteerde programma hebt u een hoofdlijst nodig die alle kenmerken bevat die een huisobject kan bezitten. Deze hoofdlijst met kenmerken wordt een -klasse genoemd.
Dus daar heb je het. Objectgeoriënteerd programmeren is verkeerd benoemd. Het zou eigenlijk "programmeren met klassen en objecten" moeten worden genoemd. "
Merk op dat het woord klassen het eerst werd vermeld? Denk opnieuw aan een woningbouw die in aanbouw is. Ergens op het terrein, in een gammele trailer geparkeerd op kale aarde, is een hoofdlijst van kenmerken bekend als een blauwdruk. De blauwdruk van een architect is als een objectgerichte programmeursklasse. Een blauwdruk is een lijst met kenmerken die elk huis zal hebben. De blauwdruk zegt: "zijspoor. "Het werkelijke huisobject heeft grijze gevelbeplating. De blauwdruk zegt: "keukenkast. "Het eigenlijke huisobject heeft Lodewijk XIV keukenkasten.
Een jaar nadat je de blauwdruk hebt gemaakt, gebruik je deze om tien huizen te bouwen. Het is hetzelfde met klassen en objecten. Eerst schrijft de programmeur code om een klasse te beschrijven. Wanneer het programma wordt uitgevoerd, maakt de computer objecten uit de klasse (blauwdruk).
Dus dat is de echte relatie tussen klassen en objecten. De programmeur definieert een klasse en van de klassedefinitie maakt de computer afzonderlijke objecten.
Wat is er zo goed aan een objectgerichte taal?
Stel je voor dat je al een computerprogramma hebt geschreven om de bouwinstructies voor huizen in een nieuwe ontwikkeling bij te houden. Vervolgens beslist de grote baas over een aangepast plan - een plan waarbij de helft van de huizen drie slaapkamers heeft en de andere helft er vier heeft.
Als u de oude FORTRAN / C-stijl van de computerprogrammering gebruikt, zien uw instructies er als volgt uit:
Graaf een greppel voor de kelder.
Leg beton langs de zijkanten van de sloot.
Leg twee bij vouwen langs de zijkanten voor het frame van de kelder.
…
Dit lijkt op een architect die een lange lijst met instructies maakt in plaats van een blauwdruk. Om het plan te wijzigen, moet u de lijst doorlopen om de instructies voor het bouwen van slaapkamers te vinden. Om de zaken nog erger te maken, konden de instructies worden verspreid over de pagina's 234, 394-410, 739, 10 en 2. Als de bouwer ingewikkelde instructies van andere mensen moest ontcijferen, zou de taak tien keer moeilijker zijn.
Beginnen met een klasse is echter hetzelfde als beginnen met een blauwdruk. Als u besluit om zowel huizen met drie als met vier slaapkamers te hebben, kunt u beginnen met een blauwdruk met de naam woning die een begane grond en een tweede verdieping heeft, maar geen binnenmuren heeft getekend op de tweede verdieping.. Vervolgens maak je nog twee blauwdrukken op de tweede verdieping - één voor het huis met drie slaapkamers en één voor het huis met vier slaapkamers. (Noem deze nieuwe blauwdrukken de huis met drie slaapkamers en de huis met vier slaapkamers blauwdruk.)
De collega's van je bouwers staan versteld van je gevoel voor logica en organisatie, maar ze maken zich zorgen. Ze stellen een vraag. "Je noemde een van de blauwdrukken de blauwdruk van de 'drieslaapkamerwoning'. Hoe kun je dit doen als het een blauwdruk is voor een tweede verdieping en niet voor een hele woning? "
Je glimlacht willens en antwoordt:" De blauwdruk van het huis met de drie slaapkamers kan zeggen: 'Zie voor informatie over de onderste verdiepingen de originele blauwdruk van het huis. 'Op die manier beschrijft de huisblauwdruk met drie slaapkamers een heel huis. De blauwdruk van het huis met vier slaapkamers kan hetzelfde zeggen. Met deze opstelling kunnen we profiteren van al het werk dat we al hebben gedaan om de originele huisblauwdruk te maken en veel geld te besparen. “
In de taal van objectgeoriënteerd programmeren, zijn de huisklassen met drie en vier slaapkamers die de kenmerken van de oorspronkelijke huisklasse overerven . Je kunt ook zeggen dat de huisklassen met drie en vier slaapkamers zijn die de oorspronkelijke huisklasse van uitbreiden. De oorspronkelijke huisklasse wordt de
superklasse van de huisklassen met drie en vier slaapkamers genoemd.In die geest zijn de huisklassen met drie en vier slaapkamers subklassen van de oorspronkelijke huisklasse. Anders gezegd, de oorspronkelijke huisklasse wordt de ouderklasse genoemd van huisklassen met drie en vier slaapkamers. De huisklassen met drie en vier slaapkamers zijn kinderklassen van de oorspronkelijke huisklasse. Onnodig te zeggen dat de collega's van je huisbouwer jaloers zijn. Een menigte huis-aannemers pompt om je heen om je geweldige ideeën te horen. Dus op dat moment laat je nog een bom vallen: "Door een klasse met subklassen te maken, kunnen we de blauwdruk in de toekomst opnieuw gebruiken. Als iemand langskomt en een huis met vijf slaapkamers wil, kunnen we onze oorspronkelijke huisblauwdruk uitbreiden door een huisblauw te maken met vijf slaapkamers. We hoeven nooit meer geld uit te geven voor een originele huisblauwdruk. "
" Maar ", zegt een collega in de achterste rij," wat gebeurt er als iemand een ander ontwerp op de eerste verdieping wil? Gieten we de originele huisblauwdruk weg of beginnen we overal in de originele blauwdruk te krabbelen? Dat kost veel geld, nietwaar? "
Op een zelfverzekerde toon antwoord je:" We hoeven niet te rotzooien met de originele huisblauwdruk. Als iemand een jacuzzi in zijn woonkamer wil, kunnen we een nieuwe, kleine blauwdruk maken die alleen de nieuwe woonkamer beschrijft en dit de
blueprint van de jacuzzi-in-woonkamer noemen. Dan kan deze nieuwe blauwdruk verwijzen naar de originele huisblauwdruk voor info over de rest van het huis (het deel dat niet in de woonkamer is). "In de taal van objectgeoriënteerd programmeren, breidt de jacuzzi-in-woonkamer blauwdruk nog steeds uit de oorspronkelijke huisblauwdruk. De jacuzzi-blauwdruk is nog steeds een subklasse van de oorspronkelijke huisblauwdruk. In feite is alle terminologie over superklasse, ouderklasse en kindklasse nog steeds van toepassing. Het enige dat nieuw is, is dat de jacuzzi-blauwdruk voorrang heeft op de woonkamer in de originele huisblauwdruk. In de dagen vóór objectgeoriënteerde talen kende de programmeerwereld een crisis in softwareontwikkeling. Programmeurs schreven code, ontdekten vervolgens nieuwe behoeften en moesten vervolgens hun code vernietigen en helemaal opnieuw beginnen. Dit gebeurde keer op keer omdat de code die de programmeurs aan het schrijven waren niet kon worden hergebruikt. Objectgeoriënteerd programmeren heeft dit alles ten goede veranderd.