-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconstructores.scala
88 lines (63 loc) · 4.2 KB
/
constructores.scala
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
//--** EJEMPLO 1 **--\\
// Crear una clase
class Ciudad(nombre: String, clientes: Int) { // Este es el CONSTRUCTOR PRINCIPAL
println(s"La ciudad $nombre ha sido creada") // Estas variables forman parte del constructor principal y se inicializan con él
private var presupuesto:Int = _
private var ratio:Int = _
def this(nombre: String, clientes: Int, presupuesto: Int) { // Este es el CONSTRUCTOR AUXILIAR
this(nombre: String, clientes: Int) // Invocar al constructor principal - OBLIGATORIO invocar siempre a un constructor anterior
this.presupuesto = presupuesto // Resolver el nuevo argumento para que pase al constructor principal y que tenga efecto
this.ratio = presupuesto / clientes // Calcular un nuevo valor para añadirlo al constructor principal
}
def resumen(): Unit ={ // Método de clase
println(s"La ciudad $nombre cuenta con $clientes clientes y tiene un presupuesto de $presupuesto")
println(s"El ratio presupuesto/cliente para madrid es de $ratio")
}
}
// Correr el código
object prueba1 {
def main(args: Array[String]): Unit = {
var ciudad1 = new Ciudad("Córdoba", 200) // La ciudad Córdoba ha sido creada (CONSTRUCTOR PRINCIPAL - el valor de presupuesto y de ratio será 0)
var ciudad2 = new Ciudad("Segovia", 200, 50000) // La ciudad Segovia ha sido creada (CONSTRUCTOR AUXILIAR)
ciudad1.resumen() // La ciudad Córdoba cuenta con 200 clientes y tiene un presupuesto de 0
// El ratio presupuesto/cliente para Córdoba es de 0
ciudad2.resumen() // La ciudad Segovia cuenta con 200 clientes y tiene un presupuesto de 50000
// El ratio presupuesto/cliente para Segovia es de 250
}
}
//--** EJEMPLO 2 **--\\
class Ciudad { // CONSTRUCTOR PRINCIPAL SIN ARGUMENTOS
println("Ciudad creada")
private var nombre:String = _
private var altitud:Int = _
private var clientes:Int = _
private var presupuesto:Int = _
def this(nombre: String, altitud: Int) { // CONSTRUCTOR AUXILIAR 1
this() // Referencia al constructor principal
this.nombre = nombre
this.altitud = altitud
}
def this(clientes: Int, presupuesto: Int) { // CONSTRUCTOR AUXILIAR 2
this() // Referencia al constructor principal.
// SI SE QUISIESE PODRÍA REFERENCIARSE AL OTRO CONSTRUCTOR AUXILIAR PARA INICIARLO TAMBIÉN, PERO DEBEN COINCIDIR LOS PARÁMETROS
this.clientes = clientes
this.presupuesto = presupuesto
}
def resumen1(): Unit ={ // Método de clase
println(s"La ciudad $nombre tiene una altitud de $altitud")
}
def resumen2(): Unit ={ // Método de clase
println(s"Hay $clientes clientes y un presupuesto de $presupuesto")
}
}
// Correr el código
object prueba2 {
def main(args: Array[String]): Unit = {
var ciudad1 = new Ciudad1("Lugo", 465) // Ciudad creada
var ciudad2 = new Ciudad1(25, 6000) // Ciudad creada
ciudad1.resumen1() // La ciudad Lugo tiene una altitud de 465
ciudad1.resumen2() // Hay 0 clientes y un presupuesto de 0
ciudad2.resumen1() // La ciudad null tiene una altitud de 0
ciudad2.resumen2() // Hay 25 clientes y un presupuesto de 6000
}
}