Discussion: Class et objets

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    mai 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : mai 2017
    Messages : 2
    Points : 1
    Points
    1

    Par défaut Class et objets

    Bonjour à toutes et à tous,

    Je suis débutant en programmation Swift et j'aimerais comprendre quelque chose.

    J'ai créé une class puis 2 objets...

    Comment puis-je faire une vérification sur l'ensemble de mes objets créés ?

    J'ai pensé stocker le nombre de mes let dans une var au fur et à mesure, mais comment les utiliser après coup dans une fonction ?

    Schéma :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    class Personne {
     
        var toutesLesPersonnes:Int = 0
        var nom = ""
        var prenom = ""
     
        init(nom:String, prenom:String) {
            self.nom = nom
            self.prenom = prenom
            self.toutesLesPersonnes += 1
        }
     
        func verifierPrenom(prenom:String) {
            for i in 1 ... toutesLesPersonnes {
                // c'est ici que je flanche, car j'aimerais utiliser la variable d'un "for" - ai-je la bonne méthode pour checker les personnes ?
                if personne + i + .prenom == prenom {
                    print("la personne \(i) a comme prénom \(prenom)")
                }
            }
        }
    }
     
    let personne1 = Personne(nom: "PERNAUD", prenom: "Jean")
    let personne2 = Personne(nom: "BARTEZ", prenom: "Claude")
     
    // ce que je voudrais faire en gros ici : checker toutes les personnes pour savoir le ou lesquels ont comme prénom Claude
     
    verifierPrenom("Claude")
    D'avance, merci pour vos explications.

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    mai 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : mai 2017
    Messages : 2
    Points : 1
    Points
    1

    Par défaut

    69 personnes qui regardent mon post et personne ne répond sur ce forum ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    juin 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : juin 2017
    Messages : 17
    Points : 23
    Points
    23

    Par défaut Classe. Instance de classe, strong, weak etc

    Bonjour number6er, bonjour à toutes et à tous.

    Pour essayer de répondre à vos questions.
    J'ai été obligé de reprendre la documentation "The Swift Programming Language".
    Plus particulièrement le chapitre sur Automatic Reference Counting (Comptage Automatique de Référence).
    A partir de là, j'ai écrit un petit bout de code. Bonne lecture.

    Cordialement

    PS : Modifications
    1 - Commentaires légèrement modifiés dans le code.
    2 - Plus de précision sur init et deint. Les termes allouée et désalloué étaient incorrectes à mon avis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    // main.swift
    // SwiftCommandeEnLigne
     
    import Foundation
     
     
    class Personne {
     
     // MARK: - Classe propriétés public
     // public est préciser, il pourrait ne pas l'être
     public static var Nombre: Int {return Personne.Cardinal}
     
     
     
      // MARK: - Classe propriétés privée
     private static var Cardinal: Int = 0
     private static var Instances: Array<Personne> = []
     private static var Référence = 1
     
     // MARK: - Classe méthodes public
     static func Lister() {
      for personne in Personne.Instances {
       print(personne.description)
      }
     }
     
     static func Lister(prénom: String) {
      for personne in Personne.Instances {
       if personne.prénom == prénom {
        print(personne.description)
       }
      }
     }
     
     static func Supprimer() {
      Personne.Instances = []
     }
     
     static func Supprimer(instance personne: Personne?) {
      var indice = 0
     
      for instance in Personne.Instances {
       if let personne = personne {
        if personne.référence == instance.référence {
         Personne.Instances.remove(at: indice)
         break
        }
       }
       indice += 1
      }
     }
     
     
     // MARK: - init et deinit
     init(nom:String, prénom:String) {
      print("Après allocation ",terminator: "~> ")
      self.nom = nom
      self.prénom = prénom
      self.référence = Personne.Référence
      Personne.Cardinal += 1
      Personne.Instances.append(self)
      Personne.Référence += 1
      print("init Personne ~> Réf: \(self.référence), Nom: \(nom), Prénom: \(prénom). Instance initialisée")
     }
     
     deinit {
      print("Avant désallocation ",terminator: "~> ")
      Personne.Cardinal -= 1
      print("deinit \(self.description). Instance vers sa destruction")
     }
     
     // MARK: - Instance propriétés public
     // Ici public est omis, description est public par défaut
     var description: String {return "Personne ~> Rèf: \(référence) Nom: \(nom) Prénom: \(prénom)"}
     
     // MARK: - Instance propriétés privée
     private let référence: Int
     private var nom: String
     private var prénom: String
     
    }
     
    // =========================
    // =========================
     
     
    // MARK: - Début du programme
    print("Début du programme main")
     
    // Construction des instances de la classe personne
    print("*** Création des instances de personnes ***")
     
    weak var personne1: Personne? = Personne(nom: "PERNAUD", prénom: "Marie")
    weak var personne2: Personne? = Personne(nom: "BARTEZ", prénom: "Claude")
    weak var personne3: Personne? = Personne(nom: "GLOUTON", prénom: "Jean")
    weak var personne4: Personne? = Personne(nom: "FORMIDABLE", prénom: "Claude")
    weak var personne5: Personne? = Personne(nom: "GRANTECAFE", prénom: "Claude")
    weak var personne6: Personne? = Personne(nom: "MUDIOFIKATE", prénom: "Thérèse")
     
     
    // Seul le tableau "static Personne.Instances" retient les instances pour le compte de la classe Personne
    // (les liens qu'il contient sont strong)
    // De personne1 à personne6 aucune de ces variables ne retiennent leur instance pour le compte de la classe Personne
    // (ils sont weak)
     
    print()
    print("=== Nombre de personnes ===")
    print("Nombre d'instance de la classe Personne ~> \(Personne.Nombre)")
     
    print()
    print("=== Liste les personnes contenus dans la classe Personne ===")
    Personne.Lister()
     
    print()
    print("=== Liste des personnes dont le prénom est Claude ===")
    Personne.Lister(prénom: "Claude")
     
    print()
    print("=== Suppressions dans Personne.Instances en utilisant personne4 et personne1 ===")
    Personne.Supprimer(instance: personne1)
    Personne.Supprimer(instance: personne4)
     
    print()
    print("=== Vers quoi pointent maintenant personne4 et personne1 ? ===")
    print (personne1?.description ?? "pointe sur rien ou nil")
    print (personne4?.description ?? "pointe sur rien ou nil")
     
    print()
    print("=== Vers quoi pointe personne3 ? ===")
    print (personne3?.description ?? "pointe sur rien ~> nil")
     
    print()
    print("=== Liste les personnes contenus dans la classe Personne ===")
    Personne.Lister()
     
    print()
    print("=== Nombre de personnes ===")
    print("Nombre d'instance de la classe Personne ~> \(Personne.Nombre)")
     
    print()
    print("=== Ajout d'une instance dans Personne <~ Nom: NOUVEAU Prénom: Claude")
    personne1 = Personne(nom: "NOUVEAU", prénom: "Claude")
    print("Nombre d'instance de la classe Personne ~> \(Personne.Nombre)")
     
    print()
    print("=== Vers quoi pointe personne1 ? ===")
    print (personne1?.description ?? "pointe sur rien ~> nil")
     
     
    print()
    print("=== Liste des personnes dont le prénom est Claude ===")
    Personne.Lister(prénom: "Claude")
     
    print()
    print("=== Suppressions de toutes les instances de la classe Personnes ===")
    Personne.Supprimer()
     
    print()
    print("=== Nombre de personnes ===")
    print("Nombre d'instance de la classe Personne ~> \(Personne.Nombre)")
     
     
    // MARK: - Fin du programme
    print()
    print("Fin du programme et sortie avec code: 0")

    [img]Nom : Classe et instance.png
Affichages : 20
Taille : 275,7 Ko[/img]

Discussions similaires

  1. [POO] Classe et objet: besoin d'aide
    Par Touareg dans le forum Syntaxe
    Réponses: 4
    Dernier message: 27/02/2007, 17h04
  2. Classe et objet + Modules standards
    Par Girzi dans le forum Modules
    Réponses: 2
    Dernier message: 03/11/2006, 21h23
  3. classe statique objet
    Par drKzs dans le forum Langage
    Réponses: 8
    Dernier message: 04/09/2006, 11h58
  4. Réponses: 4
    Dernier message: 16/08/2006, 09h19
  5. Classes et objets...
    Par cyrpaut dans le forum Général Python
    Réponses: 2
    Dernier message: 20/11/2005, 20h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo