Latest Updates: classe RSS

  • Classes abstraites: modificateur abstract class + méthodes

    admin 19 h 02 min on 14 octobre 2009 | 0 Permalink | Reply
    Tags: classe, , , ,

    Class abstract : classe abstraite + méthode abstraite : modificateur de classe
    Introduction aux modificateurs de class de type abstract
    • Une classe abstraite ne peut instancier un objet. Souvent ce sont les sous classes qui ont la possibilité d’instancier un objet, à partir d’information héritée de la super classe abstraite.
    • Au moins une méthode est abstraite, la classe devient d’office abstraite même si le mot clef « abstract », n’est pas mentionné dans la déclaration de la classe
    • Une classe abstraite doit servir de super classe aux sous-classes qu’elle contient
    • Si une sous classe contient une classe abstraite, elle devient elle-même une classe abstraite (que l’on peut imaginer comme une sous classe abstraite).
    • Une sous classe dérivée d’une classe abstraite ne doit pas forcement définir toute les méthodes héritées de sa classe abstraite parente. Une classe dérivée d’une classe parent abstraite peut elle-même être abstraite.
    • Pour qu’une sous classe héritant d’une classe abstraite puisse être instanciée, cette sous classe doit redéfinir le corps de toute les méthodes abstraites de sa classe parent. Il s’agit d’une implémentation propre à chacune des méthodes.
    • Une classe déclarée static, ou private ne peut être logiquement déclarée abstraite, étant donnée qu’elle ne peuvent être redéfinie par une éventuelle sous classe.

    Les classes abstraite servent en gros à classer les classes et les méthodes contenues dans ces sous classes.
    Exemple classique de classe abstraite qui permet de mieux comprendre le concept java de classe abstraites.
    Imaginons que nous ayons besoin de créer un programme qui effectue des traitements différents selon qu’il reçoit en paramètre des objets soit de type « homme », soit de type « femme ». On pourrait alors créer une superclasse abstraite nommée « humain ». A partir de cette super classe abstraite de type « humain », on va définir deux sous-classes : la première nommé classe « homme », la deuxième sous classe nommée « femme ». A partir de ces sous classes, il devient intéressant de créer des objets de type homme ou femme, afin de donner ces objets instanciés en paramètre du programme. On peut aisément comprendre que l’on peut certes instancier de type « homme », ou de type femme, mais pas un humain. Il manquerait des informations telles que le genre sexuel de l’objet, le prénom (doit-il être un prénom féminin ou masculin ?) et une infinité d’autres informations manquantes qui nous empêche de créer un objet pratique utilisable. Déclarer la classe humain « abstract » est un choix du programmeur java qui le fait dans le but de mieux concevoir son programme, mieux ranger et ordonner les multiples classes qui composent sont programme. Ainsi, il devient évident dans notre exemple, que le programme ne peut pas (car cela ne lui est d’aucune utilité pratique) instancier des objets de type « humain ».

    Autre exemple expliqué de l’utilisation d’une classe abstraite. On peut créer une classe drapeau qui, par default, n’est ni levé ni baissé. Les méthodes introduites dans la classe abstraite pourraient définir les cals dans lesquels le drapeau serait levé ou baissé. Des sous classes utilisant le mot extends (pour hériter des caractéristiques de la super classe) pourrait elle par la suite instancier un objet de type drapeau en définissant les caractéristiques propres à chaque objets instanciés de type drapeau.
    Une classe peut être déclarée abstraite même si elle n’est pas composée par des méthodes abstraites. Son rôle est de servir de super classe et les sous classes qui hériteront de cette classe abstraite se chargeront d’implémenter l’héritage de cette classe.

     
  • Récuperer page html avec classe HttpUrlConnection

    admin 18 h 20 min on 10 octobre 2009 | 0 Permalink | Reply
    Tags: classe, , ,

    Récupérer le contenu d’une page html avec la classe java HttpUrlConnection :
    Chaque instance HttpUrlConnection est utilisée pour faire une requête http unique, mais la connexion réseau sous-jacent au serveur HTTP peut être partagée de manière transparente par d’autres instances de la classe. L’appel de la méthode close () sur la méthode InputStream ou OutputStream d’une requête HttpUrlConnection peut libérer des ressources réseaux associées à cette instance, mais n’a aucun effet sur toute connexion persistante partagée. L’appel de la méthode disconnect () peut fermer le socket sous-jacent, si une connexion persistante est par ailleurs ralenti à ce moment.

    Dans cet exemple de code java, on récupère le code source de la page html de la page http://java.sun.com/j2se/1.4.2/docs/api/java/net/HttpURLConnection.html (page de documentation officiel de Sun concernant les requêtes http).

    Pour réaliser cette requête HttpUrlConnection, nous allons utiliser 2 classes :
    La classe nommée RecupererPageHtml et la classe Source.

    Voici le code de la classe source

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class Source {
    	public static String getHttpPage(String classeHttpUrlConnection) {
    		String sURL = "http://java.sun.com/j2se/1.4.2/docs/api/java/net/HttpURLConnection.html";
    		String page = ""; // page html vide par défault
    
    		try {
    			URL epguides = new URL(sURL);
    	        URLConnection conn = epguides.openConnection();
    	        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    
    	        String tmp; // déclaration de la variable tmp qui va stocker temporairement le contenu reçu par l'objet bufferedReader
    	        while((tmp = bufferedReader.readLine()) != null) {
    	        	page += tmp + "\n"; // à chaque tour de boucle, on ajoute le contenu de la variable tmp à la variable age
    	        }
    
    		} catch(Exception e) {
    			e.printStackTrace(); // imprimer la trace de la pile en cas de bug du programme
    		}
    
    		return page;
    	}
    }
    

    Voici le code de la classe RecupererPageHtml qui contient la méthode main du programme:

    
    public class RecupererPageHtml {
    
    	public static void main(String[] args) {
    		String pageHTML = Source.getHttpPage("classe HttpUrlConnection");
    		System.out.println(pageHTML);
    
    	}
    
    }
    
     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
esc
cancel