devstory

Classe et Objet en Swift

  1. Votre première classe
  2. La règles d'appel du Constructeur
  3. Des opérateurs de comparaison de l'objet

1. 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:
Create a Rectangle rec1
rec1.width = 5
rec1.height = 10
area1 = 50
----------
Create a Rectangle rec2
rec2.width = 10
rec3.height = 15
area2 = 150
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.

2. 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

3. 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:
r1 === r2 ? false
r1 === r3 ? true
r1 !== r2 ? false
r1 !== r3 ? true