Класс и объект в Swift

1- Введение

Статья основана на:
  • Swift 2.x

  • XCode 7.3

2- Ваш первый Класс

Swift это язык унаследованный от языка C и  Objective-C, он является и процедурным языком, и объектно-ориентированным языком. Класс (Class) является понятием объектно-ориентированного языка. Класс имеет атрибуты и методы, в действительности метод (method) понимается как функция класса. Из класса вы можете создать объекты.
Swift использует ключевое слово  class чтобы объявить класс.
Создать исходный файл  Rectangle.swift:
Rectangle.swift
import Foundation

 
class Rectangle  {
  
    // width property
    var width: Int = 5;
  
    // height property
    var height: Int = 10;
  
    // Default Constructor (No parameter)
    // (Method to create instance).
    init()  {
      
    }
  
    // Contructor with 2 parameters.
    // self.width refers to the width property of the class
    init (width: Int, height: Int)  {
        self.width = width
        self.height = height
  
    }
  
    // A method calculates the area of the rectangle.
    func getArea()  -> Int  {
      
        var area = self.width * self.height
        return area
    }
  
  
}
Код использует класс  Rectangle чтобы создать объекты.
RectangleTest.swift
import Foundation


func test_rectangle()  {
  
    print("Create a Rectangle rec1");
  
    // Create Rectangle object
    // via default constructor: init()
    var rec1  = Rectangle()
  
  
    // Print out width, height
  
    print("rec1.width = \(rec1.width)")
    print("rec1.height = \(rec1.height)")
  
    // Call the method to calculate the area.
    var area1 = rec1.getArea()
  
    print("area1 = \(area1)")
  
  
    print("---------")
  
    print("Create a Rectangle rec2");
  
    // Create Rectangle object
    // via contructor with 2 parameters: init(Int,Int)
    var rec2 = Rectangle(width: 10, height: 15)
  
  
    // Print out width, height of object.
  
    print("rec2.width = \(rec2.width)")
    print("rec2.height = \(rec2.height)")
  
    // Call the method to calculate the area.
    var area2 = rec2.getArea()
  
    print("area2 = \(area2)")
  
}
Редактировать файл  main.swift чтобы протестировать пример:
main.swift
import Foundation

test_rectangle()
 
Запуск примера:
Теперь вам нужно объяснить про класс, это очень важно.
Что происходит когда вы создаете объект методом конструктора по умолчанию (default constructor)?
Создать объект  Rectangle методом конструктора с 2 параметрами.

3- Правило вызова Constructor

Правила  Swift 2.1 вызова йункции (function), метода (method),и конструктора (constructor):
  • Первый параметр передается функции (или методу) не требуя метки (Label)
  • Другие параметры передающиеся функции (или методу) требуется иметь метку.
  • Все параметры передающиеся в Constructor должны иметь метку (Label)

4- Оператор сравнивания объектов

В  Swift, когда вы создаете объект через конструктор (Constructor) реальный объект создается в памяти, и имеет определенный адрес. 

Оператор назначает объект  AA объектом  BB не создавая новые объекты в памяти, это просто указывающий адрес от  AA до адреса  BB.
Оператор === использованный для сравнения 2  указывающих объектов, возвращает  true если 2 объекта указывают на одинаковый адрес в памяти. Оператор !== использованный для сравнения 2 адресов 2 указывающих объектов, возвращает true если 2 объекта указывают на 2 разных адреса. 
IdentifyOperator.swift
import Foundation


func identifyOperator()    {
  
  
    // Create object: r1
  
    var r1 = Rectangle(width: 20,height: 10)
  
    // Create object: 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
  
}
Запуск примера: