RosettaCodeData/Task/Classes/Portugol/classes.portugol

42 lines
1.1 KiB
Plaintext

programa {
inclua biblioteca Objetos --> obj
// "constructor" returns address of object
funcao inteiro my_class_new(inteiro value) {
inteiro this = obj.criar_objeto()
obj.atribuir_propriedade(this, "variable", value) // add property to object
retorne this
}
// "method" takes the address returned by criar_objeto
funcao my_class_some_method(inteiro this) {
my_class_set_variable(this, 1)
}
// "setter"
funcao my_class_set_variable(inteiro this, inteiro value) {
obj.atribuir_propriedade(this, "variable", value)
}
// "getter"
funcao inteiro my_class_get_variable(inteiro this) {
retorne obj.obter_propriedade_tipo_inteiro(this, "variable")
}
funcao inicio() {
inteiro this = my_class_new(0)
escreva("variable = ", my_class_get_variable(this), "\n")
my_class_some_method(this)
escreva("variable = ", my_class_get_variable(this), "\n")
my_class_set_variable(this, 99)
escreva("variable = ", my_class_get_variable(this), "\n")
obj.liberar_objeto(this)
}
}