Swift 101 - Classes, Variables, Propriétés et Méthodes

Comme promis, voici mon premier article sur l’apprentissage de la programmation dans la nouvelle langue Swift!

Définir des classes dans Swift

Le code suivant montre un exemple de définition de classe Swift:

Pour déclarer une classe dans Swift, utilisez le mot - clé class suivi du nom de la classe. S'il a une super-classe, vous ajoutez un colon et le nom de la super-classe. Le début et la fin du cours sont indiqués par les accolades ouvrantes et fermantes.

Dans Swift, les classes sont définies dans un seul fichier de code source .swift par rapport à Objective-C, dans lequel les classes sont définies dans deux fichiers distincts, un fichier d'en-tête (.h) et un fichier d'implémentation (.m).

Déclaration de variables

Le code suivant montre un exemple de déclaration de variable:

Vous commencez une déclaration de variable avec le mot-clé var suivi du nom de la variable. Ensuite, vous ajoutez deux points, suivis du type de variable. Vous pouvez ensuite affecter une valeur à la variable à l'aide de l'opérateur d'affectation (=).

Dans Swift, si vous affectez une valeur initiale à une variable, vous n'avez pas besoin de spécifier le type de variable, comme indiqué dans le code suivant:

Vous pouvez le faire, car Swift dispose d’une fonction appelée inférence où elle peut déterminer ou déduire le type de la variable en fonction de la valeur que vous lui avez affectée.

En Objective-C, vous pouvez déclarer des variables d'instance au niveau de la classe et des variables locales dans les méthodes. Dans Swift, il n'y a pas de variables de niveau classe, mais uniquement des variables locales que vous déclarez au sein de méthodes. Cependant, vous pouvez déclarer des propriétés au niveau de la classe (voir la section Déclaration de propriétés ci-dessous.)

La fin de l'astérisque

En Objective-C, vous utilisez un astérisque pour indiquer qu'une variable contient un pointeur sur un objet. Dans Swift, une constante ou une variable peut contenir un pointeur sur une adresse en mémoire (bien que ce ne soit pas un pointeur direct), mais vous n'avez jamais besoin d'utiliser un astérisque dans ce contexte.

Déclaration de propriétés simples

Le code suivant montre un exemple de déclaration de propriété:

Comme vous pouvez le constater, cela ressemble beaucoup à la déclaration d'une variable, si ce n'est que vous déclarez une propriété au niveau de la classe plutôt que dans une méthode.

Comme pour les variables, si vous affectez une valeur initiale à une propriété, vous n'avez pas à spécifier le type de la propriété. Vous pouvez également initialiser des propriétés à partir de méthodes d'initialiseur (voir la section ci-dessous sur les initialiseurs pour plus de détails.) Le code suivant montre un exemple de déclaration d'une propriété sans spécifier de type:

En Objective-C, les propriétés avaient généralement des variables d'instance de sauvegarde dans lesquelles la valeur réelle de la propriété était stockée. Swift simplifie les propriétés en unifiant les concepts de propriétés et de variables d'instance. Les propriétés n'ont plus de variable d'instance de sauvegarde. Tout ce qui concerne une propriété est déclaré à un seul endroit.

Dans Swift, vous n'avez pas besoin d'utiliser le mot clé self pour faire référence à une propriété, sauf si la méthode dans laquelle vous écrivez du code a un paramètre portant le même nom que la propriété.

Déclaration des propriétés calculées

Swift a également des propriétés calculées auxquelles sont associées des méthodes get et set, comme indiqué dans le code suivant:

Dans cet exemple, la classe Thermometer a une propriété simple temperatureFahrenheit et une propriété calculée temperateCelsius .

Notez que les méthodes get et set de la classe Thermometer ne font pas référence à une variable d'instance, car il n'existe pas de variable d'instance dans Swift!

Dans ce cas, la méthode get extrait la valeur de la propriété temperatureFahrenheit, la convertit en Celsius et renvoie la valeur. La méthode set prend la valeur qui lui est transmise, la convertit en Fahrenheit, puis stocke le résultat dans la propriété temperatureFahrenheit .

La valeur transmise à la méthode set de la propriété est stockée dans un paramètre nommé implicitement appelé newValue . Si vous souhaitez utiliser un nom de paramètre différent, vous pouvez spécifier le nom entre parenthèses après l' ensemble, comme indiqué dans le code suivant:

Spécifier un nom de paramètre peut rendre votre code plus facile à comprendre. Dans cet exemple, définir le nom du paramètre sur celsiusValue permet de préciser que la méthode set convertit la valeur de Celsius en Fahrenheit.

Méthodes de déclaration

Le code suivant contient un exemple de déclaration de méthode Swift:

Comme avec Objective-C, dans Swift, vous déclarez une méthode d'instance entre les accolades ouvrantes et fermantes de la classe à laquelle elle appartient.

Pour déclarer une méthode, vous devez d'abord spécifier le mot clé func, suivi du nom de la méthode. Si la méthode a des paramètres, vous les incluez entre parenthèses. Pour chaque paramètre, vous spécifiez le nom du paramètre suivi de deux points, suivi de son type. Si la méthode a une valeur de retour, vous ajoutez ensuite un trait d'union et un signe supérieur à (( > )) suivi du type de la valeur de retour.

Le code suivant contient un exemple de méthode qui n'accepte aucun paramètre et ne renvoie rien:

Comme vous pouvez le constater, les parenthèses sont obligatoires après le nom de la méthode, même en l'absence de paramètres. Une méthode qui ne retourne rien n'a pas besoin de l'indicateur de valeur de retour ( -> ) après les parenthèses.

Méthodes d'initialisation

Le code suivant contient un exemple de méthode d'initialisation utilisée pour initialiser une classe.

Les méthodes d'initialisation sont toujours nommées init et, contrairement à Objective-C, ne renvoient jamais de valeur. Dans l'exemple ci-dessus, la méthode init accepte un paramètre currentTemperature dans lequel vous pouvez transmettre la température initiale. Cette valeur est ensuite stockée dans la propriété temperatureFahrenheit .

Vous pouvez créer plusieurs méthodes initalizer comme indiqué dans l'exemple de code suivant:

Dans cet exemple, les deux méthodes sont nommées init . Pour que les noms soient uniques, un nom externe est attribué aux paramètres, fromFahrenheit et fromCelsius . Cela rend les noms de méthode complets init (fromFahrenheit :) et init (fromCelsius :) respectivement.

Il est à noter que dans Swift, les méthodes init ne sont pas héritées. D'un point de vue pratique, cela signifie que vous ne devez placer aucun code dans une méthode init que vous souhaitez pouvoir remplacer dans une sous-classe. Si vous souhaitez exécuter le code au cours de la phase d’initialisation d’une classe et souhaitez pouvoir le remplacer dans une sous-classe, vous pouvez créer une méthode distincte, placer le code d’initialisation dans cette méthode, puis appeler cette méthode à partir du répertoire. init .

Créer une instance d'une classe

Voici un exemple de création d'une instance de classe:

Comme vous pouvez le constater, pour créer une instance d'une classe, vous déclarez qu'une variable doit contenir une référence à la classe, tapez un signe égal (l'opérateur d'affectation), puis le nom de la classe suivi de parenthèses.

Conclusion

Voici quelques notions de base à connaître pour se lancer dans la programmation Swift. Dans les prochains articles, je plongerai plus profondément dans le langage pour vous aider à maîtriser la nouvelle syntaxe et structure de Swift.