J'ai été à la recherche court et de bons exemples pour démontrer les fonctionnalités OO d'une langue comme une introduction à d'autres programmeurs. Par "bon", je veux dire, ils peuvent être exécutés et produire quelque chose de plutôt significatif que des trucs foobar. Par exemple, vous pouvez illustrer la plupart des constructions de flux de contrôle par un exemple de jeu de mandelbrots ou des aspects fonctionnels par un exemple de mergesort. Mais je n'ai pas encore trouvé un bon exemple pour les constructions OO.Quels sont de bons exemples pour avoir une idée des fonctionnalités et des constructions d'OO?
Répondre
Un exemple "réel" qui est assez simple à comprendre est la classe java.io.InputStream et ses enfants. C'est un bon exemple de polymorphisme: si vous écrivez votre code pour comprendre comment utiliser InputStream, peu importe le fonctionnement de la classe sous-jacente, tant qu'elle est conforme au contrat imposé par InputStream. Donc, vous pouvez avoir une méthode dans une classe
public void dump(InputStream in) throws IOException {
int b;
while((b = in.read()) >= 0) {
System.out.println(b);
}
}
Cette méthode ne se soucie pas d'où proviennent les données.
Maintenant, si vous voulez utiliser la méthode de vidage des données à partir d'un fichier, vous pouvez appeler
dump(new FileInputStream("file"));
ou, si vous voulez utiliser dump des données à partir d'une prise,
dump(socket.getInputStream());
ou, si vous avez un tableau d'octets, vous pouvez appeler
dump(new ByteArrayInputStream(theArray));
Il existe des implémentations si InputStream qui enveloppent othe r InputStreams. Par exemple, SequenceInputStream vous permet GLOM plusieurs InputStreams en un seul:
dump(new SequenceInputStream(new FileInputStream("file1"),
new FileInputStream("file2"));
Si vous voulez créer votre propre, InputStream personnalisé, vous pouvez étendre la classe InputStream, et remplacer la méthode de lecture int():
public class ZerosInputStream extends InputStream {
protected int howManyZeros;
protected int index = 0;
public ZerosInputStream(int howManyZeros) {
this.howManyZeros = howManyZeros;
}
@Override
public int read() throws IOException {
if(index < howManyZeros) {
index++;
return 0;
} else {
return -1;
}
}
Ensuite, vous pouvez utiliser que dans votre appel de vidage:
dump(new ZerosInputStream(500));
- 1. Quels sont les bons exemples d'utilisation de WPF Datagrid?
- 2. Quels sont les bons exemples d'utilisation du pattern/idiom CALLBACK?
- 3. Quels sont les bons serveurs d'applications pour les piles LAMP?
- 4. Quels sont les sites Web qui contiennent de bons exemples de conception d'interface utilisateur?
- 5. Quels sont les bons addins d'utilisabilité pour Visual Studio 2008?
- 6. Quels sont de bons exemples de sites web 2.0 utilisant nHibernate?
- 7. Quels sont les bons tutoriels Wireshark?
- 8. msbuild release - doit avoir des fonctionnalités
- 9. Quels sont les bons forums pour discuter des problèmes de conception de sites Web?
- 10. Haskell newbie: utiliser la mise en page ou pas? Quels sont les avantages et les inconvénients (utiliser des exemples)
- 11. Quels sont les bons exemples d'un client WS-Eventing en Java?
- 12. Quelles applications ont les poms maven nifty et sont bons comme exemples de capacités maven
- 13. Quels sont quelques exemples des méthodes validate() et reset() dans Struts 2?
- 14. Quels sont les meilleurs exemples de sites Java?
- 15. Quels sont les bons blogs de Ruby on Rails?
- 16. Quels livres et ressources sont bons pour apprendre OpenGL ES pour iPhone OS rapidement?
- 17. Bons exemples de documentation de l'application
- 18. Recommandations pour de bons exemples/exemples SSIS (SQL Server Integration Services) pour ETL?
- 19. Ces exemples sont-ils des fermetures C#?
- 20. Quels sont les bons outils disponibles pour créer de l'aide en ligne pour les applications .net?
- 21. Equivalent Java des constructions .NET
- 22. Quels sont les bons conteneurs d'applications pour les services de niveau intermédiaire pour scala?
- 23. De bons exemples de sites utilisant Silverlight et DeepZoom?
- 24. Quels sont les bons moyens de télécharger des données .csv en vrac dans une application web en utilisant Django/Python?
- 25. Quels sont les bons blogs à suivre dans l'espace RIA?
- 26. Quels sont les bons outils/frameworks pour i18n d'une base de code PHP?
- 27. Quels sont les bons matériaux pour un développeur de bureau pour devenir développeur Web?
- 28. Extension des fonctionnalités de tableau dans SSRS
- 29. Quels bons logiciels ou scripts sont disponibles pour gérer les utilisateurs et les abonnements sur notre site Web?
- 30. Quels sont les meilleurs gemmes pour les fonctionnalités de réseautage social?