BERKIOSDocs
Core

Core : types, classes et héritage

Définir un type de données

Un type regroupe des champs :

module "Capteurs"

type LectureCapteur
  capteur: Texte
  temperature: Décimal
  valide: Bool

fonction principale() -> Entier
  soit lecture = LectureCapteur("T1", 21.4, true)
  afficher lecture.temperature
  retourner 0

Les classes

Une classe ajoute des méthodes qui agissent sur ses champs. Dans une méthode, self désigne l'objet courant.

module "Comptes"

class Compte
  titulaire: Text
  solde: Int

  fn deposer(montant: Int) -> Int
    self.solde = self.solde + montant
    retourner self.solde

  fn retirer(montant: Int) -> Int
    self.solde = self.solde - montant
    retourner self.solde

fn main() -> Int
  soit compte = Compte("Amina", 100)
  afficher compte.deposer(50)
  afficher compte.retirer(20)
  afficher compte.solde
  retourner 0

Résultat : 150, 130, 130.

On crée un objet en appelant la classe avec la valeur de chaque champ, dans l'ordre : Compte("Amina", 100).

L'héritage

extends permet à une classe de reprendre une autre classe et de redéfinir ses méthodes :

class Animal
  nom: Text

  fn parler() -> Text
    retourner "..."

class Chien extends Animal
  race: Text

  fn parler() -> Text
    retourner "Wouf !"

Les interfaces

Une interface décrit ce qu'une classe doit savoir faire, sans dire comment :

interface Rechargeable
  fn recharger(quantite: Int) -> Int

class Batterie implements Rechargeable
  niveau: Int

  fn recharger(quantite: Int) -> Int
    self.niveau = self.niveau + quantite
    retourner self.niveau

Pour aller plus loin

Le dépôt contient des exemples exécutables dans compiler/examples/core/ : classes, héritage, interfaces, génériques, modules et valeurs typées. Exécutez-les avec berkios core <fichier>.bks.