Essai de classe [Résolu]

Signaler
-
 Micoute -
Bonjour à tous,

n'ayant pas réussi à faire des bases de données, j'essaye de me lancer dans les classes et j'ai pensé à une classe rectangle.

Etant complètement novice en la matière, je viens donc vers vous les connaisseurs (les bibliothèques vivantes), afin de parfaire mes connaissances, car j'aime bien partager mon savoir.

Je vous en remercie donc d'avance.

Voici ma classe

Public Class Rectangle
    Public Longueur As Double
    Public Largeur As Double

    Public Sub New()

    End Sub

    Public Function Surface()
        Surface = Longueur * Largeur
        Return Surface
    End Function

    Public Function DonnerLongueur()
        Return Longueur
    End Function

    Public Function DonnerLargeur()
        Return Largeur
    End Function

    Public Function EstCarre()
        If Longueur = Largeur Then
            Return True
        Else
            Return False
        End If
    End Function

    Public Function longueurDiagonale()
        Dim LongDiag As Double
        LongDiag = Longueur * Longueur + Largeur * Largeur
        LongDiag = Math.Sqrt(LongDiag)
        Return LongDiag
    End Function

    Public Function DefinirLongueur(NouvelleLongueur)
        If NouvelleLongueur >= 0 Then
            Longueur = NouvelleLongueur
            Return True
        End If
        Return False
    End Function

    Public Function DefinirLargeur(NouvelleLargeur)
        If NouvelleLargeur >= 0 Then
            Largeur = NouvelleLargeur
            Return True
        End If
        Return False
    End Function
End Class



Tout homme doit être poli ; mais il doit aussi être libre.

10 réponses


1/ Le choix du nom 'Rectangle' pour ta classe n'est pas judicieux car ce nom de classe existe déjà dans le framework. Tu peux mais en encadrant le nom de crochets (pas très pratique).

2/ Il faut pourvoir ta classe de propriétés pour assigner ou récupérer les valeurs des variables. On utilise en général pour cela des propriétés plutôt que des fonctions.

3/ On peut aussi fournir des valeurs d'initialisation par des paramètres au constructeur (New) lors de l'instanciation. Mais on peut aussi les fournir plus tard après l'instanciation.

Voici ce que donnerait ta classe :
Public Class Rectangle
    Dim _Longueur As Double
    Dim _Largeur As Double

    Public Sub New(ByVal lr As Integer, ByVal lg As Integer)
        _Longueur = lg
        _Largeur = lr
    End Sub

    Public Function Surface() As Integer
        Return _Longueur * _Largeur
    End Function

    Property Longueur As Integer
        Set(ByVal value As Integer)
            _Longueur = value
        End Set
        Get
            Return _Longueur
        End Get
    End Property

    Property Largeur As Integer
        Set(ByVal value As Integer)
            _Largeur = value
        End Set
        Get
            Return _Largeur
        End Get
    End Property

    Public Function EstCarre() As Boolean
        If Longueur = Largeur Then
            Return True
        Else
            Return False
        End If
    End Function

    Public Function longueurDiagonale() As Double
        Dim LongDiag As Double
        LongDiag = _Longueur * _Longueur + _Largeur * _Largeur
        LongDiag = Math.Sqrt(LongDiag)
        Return LongDiag
    End Function
End Class


Et pour l'utiliser par exemple :

Dim MonRectangle as [Rectangle] = New [Rectangle](100, 200)
If Not MonRectangle.EstCarre Then
     MonRectangle.Largeur = MonRectangle.Longueur
     MessageBox.Show(String.Format("Le rectangle fait maintenant {0} de largeur, {1} de longueur et {2} px² de surface", MonRectangle.Largeur, MonRectangle.Longueur, MonRectangle.Surface))
Else
     MessageBox.Show(String.Format("Le rectangle fait {0} de largeur, {1} de longueur et {2} px² de surface", MonRectangle.Largeur, MonRectangle.Longueur, MonRectangle.Surface))
End If
Messages postés
206
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
5 mars 2013
1
Rebonjour,

Je voulais simplement pointer du doigt sur le fait que VB.net est oriente objet.
Ce qui signifie, par exemple, que le controle PictureBox est un Objet avec des proprietes, des methodes et des evenements.
C'est tout.

A+
JLuc01

Bonjour,

Et quelle est la question ?
Bonjour monsieur banana32,

j'ai été surpris de la question, en fait je pense que ma classe ne peut surement pas être utilisable comme ça, sinon j'aurais vraiment la chance du débutant !

J'aimerais savoir par exemple, comment créer plusieurs objets rectangles à partir de ma classe.

J'aimerais savoir aussi de quelle classe je pourrais la faire hériter, enfin tous ces trucs que les novices comme moi, ne connaissent pas encore (je ne demande pas un cours, juste quelques subtilités).

Et merci d'avoir accepté de me répondre.

Tout homme doit être poli ; mais il doit aussi être libre.
Re bonjour,

pour expliquer le pourquoi de ma demande, je souhaite faire une classe qui me servira de modèle pour mes futures créations de classes, donc je souhaite ne rien oublier de primordial.

Je vous remercie tous de nouveau.


Tout homme doit être poli ; mais il doit aussi être libre.
Messages postés
14672
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2020
143
Bonjour,

A la place de définir des fonctions pour assigner les valeurs, utilises des propriétés : Property

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Re bonjour à tous,

je vois que mes connaissances vont encore s'accroître, quoique je me doutais qu'une classe de ce nom devait exister vu que ça s'écrit pareil en anglais et en français, par contre les propriétés, j'ai encore du mal à appréhender, mais j'ai quand même une bonne notion des objets.

Merci encore pour les grands services que vous me rendez !


Tout homme doit être poli ; mais il doit aussi être libre.
Messages postés
206
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
5 mars 2013
1
Bonjour,

Une facon de voir les choses pour une Classe, peut-etre un peu primaire:
1- Utilisez un control, par exemple "PictureBox".
2- PictureBox.BackColor avec 'BackColor' etant la propriete (aussi disponible dans la fenetre des proprietes)
3- PictureBox.Refresh avec 'Refresh' etant une methode (equivalent, si on peut dire, a une fonction utilisee dans votre exemple)
4- Et apres, a considerer les evenements, comme PictureBox.Click...
5- Propriete, Methode et Evenement ayant des icones differents dans l'intellisense: ecrivez 'PictureBox.', et apres le point vous avez plein de possibilites.

Voila, c'est tres bref, mais peut-etre un debut d'explication pour debutant, les pros saurait surement l'expliquer mieux que ca. Pour moi, c'etait une base de comprehension.

A+
JLuc01
Bonjour monsieur JLuc01,

je sens que votre idée est très bonne, mais je suis bien trop novice pour en saisir toutes les subtilités, c'est comme si on donnait de la viande à un bébé.

Je vais quand même creuser dans ce sens, car j'ai une très grande soif d'apprendre.

Merci pour l'idée qui je l'espère me sera très profitable !



Tout homme doit être poli ; mais il doit aussi être libre.
Merci JLuc01


Tout homme doit être poli ; mais il doit aussi être libre.