{Java} methodes toevoegen aan een class

Met deze post probeer ik een nieuw concept toe te voegen aan OOP gerichte talen als Java/C#/C++. Een methode toevoegen aan een bestaande class is niet slim, niet goed voor je classen diagram. Maar als je nu eens een algoritme wilt herschrijven of je wilt gebruik maken van een methode maar wilt hierbij niet alle childs van de class herschrijven, dan zit je vast. Dit concept zou het moeten verhelpen. Hier een voorbeeld van wat ik wil, maar het niet kan bereiken met de huidige OOP concepten.

class MyObject extends Object

{

@override

public String toString()

{

return this.getClass().getName();

}

}

Wanneer ik nu een andere class ga schrijven, moet ik vertellen aan iedere class dat ze moeten erven van MyObject. Dit is geen enkel probleem, is het niet dat je wilt dat iedere child van Object ook erft van je nieuwe Object class. Bijvoorbeeld class Class extends MyObject. Dit gaat niet lukken want ik kan niet aan de broncode van de klasse Class. Het enige wat ik kan doen is de klasse Class herschrijven, maar dit kost tijd, moeite, energie en dan heb je nog maar één klasse herschreven.

Het is de bedoeling dat programmeurs klasses kunnen extenden of methodes kunnen toevoegen, zonder dat men al de childs moet kennen. Mijn concept bestaat uit twee delen, het eerste is methodes toevoegen en het tweede is een class extenden.

class Main

{

public static void main( String[] args )

{

Object o = new Object();

Method newMethod = new Method( Method.PUBLIC , “toString” , hier de methode code );

o.getClass().addMethod( newMethod );

}

}

De tweede methode vind ik iets beter dan die hierboven. Je extend de bestaande klasse met dezelfde naam. In OOP worden dan de methodes, eigenschappen, constantes, etc in de nieuwe klasse gegooid en gelden alle overervingseigenschappen ook.

class Object extends Object

{

public String toString()

{

return this.getClass().getName();

}

}

Zoals je ziet komt mijn nieuwe Object class tussen de twee te staan en kunnen al de childs van de Object class genieten van je snellere/betere algoritme of je kan je nieuwe methodes gebruiken in iedere class. Dit concept kan je maar toepassen op classes waarvan je de broncode niet beschikt (JRE System Library bv.) en dus niet in de class zelf kan schrijven.

Hopelijk boeit dit concept de OOP programmeurs. Vragen en/of opmerkingen gelieve in de reacties te plaatsen.

Geef een reactie

Vul je gegevens in of klik op een icoon om in te loggen.

WordPress.com logo

Je reageert onder je WordPress.com account. Log uit / Bijwerken )

Twitter-afbeelding

Je reageert onder je Twitter account. Log uit / Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log uit / Bijwerken )

Google+ photo

Je reageert onder je Google+ account. Log uit / Bijwerken )

Verbinden met %s

%d bloggers op de volgende wijze: