0% ont trouvé ce document utile (0 vote)
76 vues5 pages

JAVA

Le document présente une application de gestion immobilière en Java, incluant des classes pour les appartements, locataires, et contrats de location. Il décrit également une exception personnalisée pour gérer les appartements non disponibles et fournit un point d'entrée pour tester les fonctionnalités de l'application. Les classes essentielles et leur implémentation sont détaillées, assurant une gestion efficace des entités immobilières.

Transféré par

donzeusnguie
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
76 vues5 pages

JAVA

Le document présente une application de gestion immobilière en Java, incluant des classes pour les appartements, locataires, et contrats de location. Il décrit également une exception personnalisée pour gérer les appartements non disponibles et fournit un point d'entrée pour tester les fonctionnalités de l'application. Les classes essentielles et leur implémentation sont détaillées, assurant une gestion efficace des entités immobilières.

Transféré par

donzeusnguie
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

```java

throw new AppartementNonDisponibleException("L'appartement n'est pas


disponible.");
}

appartement.setDisponible(false);
ContratLocation contrat = new ContratLocation(locataire, appartement,
dateDebut, dateFin, loyerMensuel, "Actif");
return contrat;
}
}
```

### 5. Créez une exception personnalisée `AppartementNonDisponibleException`

```java
public class AppartementNonDisponibleException extends Exception {
public AppartementNonDisponibleException(String message) {
super(message);
}
}
```

### 6. Créez une classe `Main` avec une méthode principale pour tester toutes les
fonctionnalités de votre application

```java
import java.util.Date;

public class Main {


public static void main(String[] args) {
try {
// Création de la gestion immobilière
GestionImmobiliere gestion = new GestionImmobiliere();

// Création et ajout d'appartements


Appartement app1 = new Appartement("123 Rue de Paris", 45.0, 2, true);
Appartement app2 = new Appartement("456 Rue de Lyon", 75.5, 3, true);
gestion.ajouter(app1);
gestion.ajouter(app2);

// Affichage des appartements


System.out.println("Liste des appartements :");
gestion.afficher();

// Création et ajout de locataires


Locataire loc1 = new Locataire(1, "Dupont", "Jean");
Locataire loc2 = new Locataire(2, "Martin", "Claire");
gestion.ajouter(loc1);
gestion.ajouter(loc2);

// Affichage des locataires


System.out.println("\nListe des locataires :");
gestion.afficher();

// Création d'un contrat de location


Date dateDebut = new Date();
Date dateFin = new Date(dateDebut.getTime() + (1000L * 60 * 60 * 24 *
365)); // +1 an
ContratLocation contrat = gestion.creerContrat(loc1, app1, dateDebut,
dateFin, 1200.0);

// Affichage du contrat
System.out.println("\nContrat de location créé :");
System.out.println("Locataire : " +
contrat.getLocataire().getFullName());
System.out.println("Appartement : " +
contrat.getAppartement().getAdresse());
System.out.println("Date de début : " + contrat.getDateDebut());
System.out.println("Date de fin : " + contrat.getDateFin());
System.out.println("Loyer mensuel : " + contrat.getLoyerMensuel());
System.out.println("État du contrat : " + contrat.getEtatContrat());

} catch (AppartementNonDisponibleException e) {
e.printStackTrace();
}
}
}
```

### Explications supplémentaires :


1. **Classes `Appartement`, `Locataire`, et `ContratLocation`** : Ces classes
définissent les entités principales de l'application.
2. **Classe abstraite `Personne` et classe `Locataire`** : `Locataire` hérite de
`Personne` et implémente les méthodes `getId()` et `getFullName()`.
3. **Interfaces `GererAppartement` et `GererLocataire`** : Elles définissent les
méthodes de gestion des appartements et des locataires.
4. **Classe `GestionImmobiliere`** : Cette classe implémente les interfaces et
fournit des méthodes pour gérer les appartements et les locataires, ainsi que pour
créer des contrats de location.
5. **Classe `AppartementNonDisponibleException`** : Exception personnalisée pour
gérer les cas où un appartement n'est pas disponible.
6. **Classe `Main`** : Point d'entrée de l'application pour tester les
fonctionnalités.

Avec cette structure, vous devriez être en mesure de gérer la liste des
appartements, les locataires et les contrats de location selon les spécifications
données dans l'énoncé.

Pour répondre aux questions de l'exercice, voici les réponses correspondantes


basées sur les informations fournies et les spécifications demandées.

### 1. Créez les classes selon les spécifications données.


Cela a déjà été fait dans le code fourni précédemment.

### 2. Implémentez la classe `Personne` et assurez-vous que `Locataire` hérite de


cette classe.

```java
public abstract class Personne {
protected String nom;
protected String prenom;

public Personne(String nom, String prenom) {


this.nom = nom;
this.prenom = prenom;
}
public String getNom() {
return nom;
}

public void setNom(String nom) {


this.nom = nom;
}

public String getPrenom() {


return prenom;
}

public void setPrenom(String prenom) {


this.prenom = prenom;
}

public abstract int getId();


public abstract String getFullName();
}

public class Locataire extends Personne {


private int idLocataire;

public Locataire(int idLocataire, String nom, String prenom) {


super(nom, prenom);
this.idLocataire = idLocataire;
}

@Override
public int getId() {
return idLocataire;
}

@Override
public String getFullName() {
return nom + " " + prenom;
}
}
```

### 3. Implémentez la classe `GestionImmobiliere` qui contiendra des méthodes pour


ajouter, supprimer et afficher les appartements et les locataires.
Cela a déjà été fait dans le code fourni précédemment.

### 4. Implémentez une méthode pour créer un contrat de location.


Cette méthode est incluse dans la classe `GestionImmobiliere`.

```java
public ContratLocation creerContrat(Locataire locataire, Appartement appartement,
Date dateDebut, Date dateFin, double loyerMensuel) throws
AppartementNonDisponibleException {
if (!appartement.isDisponible()) {
throw new AppartementNonDisponibleException("L'appartement n'est pas
disponible.");
}

appartement.setDisponible(false);
ContratLocation contrat = new ContratLocation(locataire, appartement,
dateDebut, dateFin, loyerMensuel, "Actif");
return contrat;
}
```

### 5. Créez une classe `Principale` avec une méthode main qui permettra de tester
toutes les fonctionnalités de gestion immobilière.
Cela a déjà été fait dans le code fourni précédemment.

```java
public class Main {
public static void main(String[] args) {
try {
GestionImmobiliere gestion = new GestionImmobiliere();

// Ajout d'appartements
Appartement app1 = new Appartement("123 Rue de Paris", 45.0, 2, true);
Appartement app2 = new Appartement("456 Rue de Lyon", 75.5, 3, true);
gestion.ajouter(app1);
gestion.ajouter(app2);

// Affichage des appartements


System.out.println("Liste des appartements :");
gestion.afficher();

// Ajout de locataires
Locataire loc1 = new Locataire(1, "Dupont", "Jean");
Locataire loc2 = new Locataire(2, "Martin", "Claire");
gestion.ajouter(loc1);
gestion.ajouter(loc2);

// Affichage des locataires


System.out.println("\nListe des locataires :");
gestion.afficher();

// Création d'un contrat de location


Date dateDebut = new Date();
Date dateFin = new Date(dateDebut.getTime() + (1000L * 60 * 60 * 24 *
365)); // +1 an
ContratLocation contrat = gestion.creerContrat(loc1, app1, dateDebut,
dateFin, 1200.0);

// Affichage du contrat
System.out.println("\nContrat de location créé :");
System.out.println("Locataire : " +
contrat.getLocataire().getFullName());
System.out.println("Appartement : " +
contrat.getAppartement().getAdresse());
System.out.println("Date de début : " + contrat.getDateDebut());
System.out.println("Date de fin : " + contrat.getDateFin());
System.out.println("Loyer mensuel : " + contrat.getLoyerMensuel());
System.out.println("État du contrat : " + contrat.getEtatContrat());

} catch (AppartementNonDisponibleException e) {
e.printStackTrace();
}
}
}
```
### Résumé des réponses :

1. **Création des classes `Appartement`, `Locataire`, `ContratLocation`** : Voir


les sections de code fournies.
2. **Implémentation de `Personne` et héritage de `Locataire`** : Voir les sections
de code fournies.
3. **Implémentation de la classe `GestionImmobiliere`** : Voir les sections de code
fournies.
4. **Création d'un contrat de location** : Voir les sections de code fournies.
5. **Classe principale `Main` pour tester les fonctionnalités** : Voir les sections
de code fournies.

Avec cette mise en œuvre, toutes les fonctionnalités demandées dans l'exercice sont
couvertes et les spécifications respectées.

Vous aimerez peut-être aussi