Classe et Objet en Swift

View more categories:

1- Introduction

Ce document est basé sur:
  • Swift 2.x

  • XCode 7.3

2- Votre première classe

Swift est un langage hérité de C et Objective-C, il est à la fois un langage procédural, à la fois comme langue orientée objet. La classe (Class) est un concept du langage de programmation orienté objet. La classe a des propriétés et des méthodes, naturellement, la méthode (method) est comprise comme une fonction de la classe. De la classe, vous pouvez créer des objets.
Swift utilise le mot-clé de la  class pour déclarer une classe.
Créez un fichier de ressources  Rectangle.swift:
Rectangle.swift
import Foundation


class Rectangle  {
    
    // width property
    var width: Int = 5;
    
    // height property
    var height: Int = 10;
    
    // Constructeur par défaut (aucun paramètre)
    // (Utilisé pour créer une instance).
    init()  {
        
    }
    
    // Contructeur avec 2 paramètres.
    // (Utilisé pour créer une instance)
    // self.width fait référence à la propriété width de la classe
    init (width: Int, height: Int)  {
        self.width = width
        self.height = height
        
    }
    
    // Une méthode calcule la surface du rectangle.
    func getArea()  -> Int  {
        
        var area = self.width * self.height
        return area
    }
    
    
}
Le code utilise la classe  Rectangle pour créer l'objet.
RectangleTest.swift
import Foundation


func test_rectangle()  {
    
    print("Create a Rectangle rec1");
    
    // Créez un objet Rectangle
    // via le constructeur par défaut: init ()
    var rec1  = Rectangle()
    
    
    // Imprimez la largeur d'impression et la hauteur
    print("rec1.width = \(rec1.width)")
    print("rec1.height = \(rec1.height)")
    
    // Appelez la méthode pour calculer la zone.
    var area1 = rec1.getArea()
    
    print("area1 = \(area1)")
    
    
    print("---------")
    
    print("Create a Rectangle rec2");
    
    // Créez un objet Rectangle
    // via le contructeur avec 2 paramètres: init (Int, Int)
    var rec2 = Rectangle(width: 10, height: 15)
    
    
    // Imprimez la largeur d'impression et la hauteur
    print("rec2.width = \(rec2.width)")
    print("rec2.height = \(rec2.height)")
    
    
    // Appelez la méthode pour calculer la zone.
    var area2 = rec2.getArea()
    
    print("area2 = \(area2)")
    
}
Éditez le fichier main.swift pour tester cet exemple:
main.swift
import Foundation

test_rectangle()
 
L'exécution de l'exemple:
Maintenant, vous devriez voir l'explication de la classe, c'est très important.
Que se passe-t-il lorsque vous créez un objet par défaut constructeur (default constructor)?
Créez un objet  Rectangle par le constructeur avec deux paramètres.

3- La règles d'appel du Constructeur

Des règles Swift 2.1 pour appeler une fonction (function), une méthode (method), et un constructeur (constructor):
  • Le premier paramètre passe aux fonctions (ou aux méthodes) n'a pas besoin d'étiquettes (Label) d'argument
  • Les autres paramètres passe aux fonctions (ou aux méthodes) exigent les étiquettes d'argument.
  • Tous les paramètres passent aux Constructeurs devraient avoir des étiquettes (Label) d'argument

4- Des opérateurs de comparaison de l'objet

Dans  Swift, lorsque vous créez un objet via le constructeur (Constructor), il sera une entité réelle qui est créée en mémoire, elle a une adresse spécifiée.

Un opérateur assigné à un objet AA par un objet BB ne crée pas une nouvelle entité sur la mémoire; il indique simplement l'adresse de AA à l'adresse de BB.
L'opérateur === est utilisé pour comparer deux objets qui indiquent, il renvoie true si les deux objets se réfèrent à la même adresse en mémoire. Les opérateurs !== est utilisé pour comparer les deux adresses de deux objets qui indiquent, il renvoie true si les deux objets pointent vers deux adresses différentes.
IdentifyOperator.swift
import Foundation


func identifyOperator()    {
    
    // Créez l'objet: r1
    var r1 = Rectangle(width: 20,height: 10)
    
    // Créez l'objet : r2
    var r2 = Rectangle(width: 20,height: 10)
    
    var r3 = r1
    
    
    var  b12:Bool =   r1 === r2
    var  b13:Bool =   r1 === r3
    
    print("r1 === r2 ?  \(b12)") // false
    print("r1 === r3 ?  \(b13)") // true
    
    
    var bb12: Bool = r1 !== r2
    var bb13: Bool = r1 !== r3
    
    
    print("r1 !== r2 ?  \(b12)") // true
    print("r1 !== r3 ?  \(b13)") // false
    
}
L'exécution de l'exemple:

View more categories: