1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| --Classe Entité
Entite = {}
--Constructeur
setmetatable(Entite, {
__call = function(self, sante)
t = {}
setmetatable(t, self)
self.__index = self
t.m_sante = sante or 1
return t
end
})
--Fonctions membres
function Entite.deplacer()
print("Je marche")
end
function Entite:lireSante()
return self.m_sante
end
--Classe Humain
Humain = {}
--Relation d'héritage
setmetatable(Humain, {__index = Entite,
--Constructeur
__call = function(self, sante, nom)
t = Entite(sante)
setmetatable(t, self)
self.__index = self
t.m_nom = nom or "sans nom"
return t
end
})
--Fonctions membres
function Humain.parler()
print("Je parle")
end
function Humain:lireNom()
return self.m_nom
end
--Classe Oiseau
Oiseau = {}
--Relation d'héritage
setmetatable(Oiseau, {__index = Entite,
--Constructeur
__call = function(self, sante)
t = Entite(sante)
setmetatable(t, self)
self.__index = self
return t
end
})
--Fonction membre substituée
function Oiseau.deplacer()
print("Je vole")
end
--Utilisation
print("Utilisation de la classe Entité:")
etre = Entite(5)
etre.deplacer()
print("Ma sante est "..etre:lireSante())
print("Utilisation de la classe Humain:")
homme = Humain(10, "Roger")
print("Bonjour, je m'appelle "..homme:lireNom())
homme.parler()
homme.deplacer()
print("Ma sante est "..homme:lireSante())
print("Utilisation de la classe Oiseau:")
animal = Oiseau(3)
animal.deplacer()
print("Ma sante est "..animal:lireSante()) |
Partager