Definir clases
Parte de la sección Programación orientada a objetos del Journey de Swift de Coddy. Lección 2 de 57.
Una clase describe un tipo de objeto: los datos que contiene cada objeto y lo que puede hacer. class Dog { ... } declara el tipo, y Dog() crea un objeto de ese tipo, también llamado instancia:
class Dog {
var name = "Rex"
var age = 3
}
let dog = Dog()
print(dog.name)
print(dog.age)Salida:
Rex
3Las variables dentro de una clase son sus propiedades. Cada instancia tiene su propia copia, que se lee y modifica mediante un punto:
class Dog {
var name = "Rex"
var age = 3
}
let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)Salida:
Rex
BellaUna función dentro de una clase es un método. Un método puede leer y cambiar las propiedades de la instancia en la que se invoca:
class Counter {
var count = 0
func increment() {
count += 1
}
func report() -> String {
"count is \(count)"
}
}
let clicks = Counter()
clicks.increment()
clicks.increment()
print(clicks.report())Salida:
count is 2Los nombres de tipos se escriben en UpperCamelCase (BankAccount); las propiedades y los métodos, en lowerCamelCase (balance, deposit()). Reunir los datos y las funciones que operan sobre ellos en un solo tipo es la idea central de la programación orientada a objetos: el código que usa un Counter llama a increment() y nunca necesita saber cómo se almacena el contador.
class BankAccount {
var balance = 0
func deposit(_ amount: Int) {
balance += amount
}
}Desafío
FácilCompleta el método describe() de la clase Pet. Devuelve una oración construida a partir de las propiedades: una mascota llamada Rex, de especie dog y edad 3 da como resultado Rex is a 3 year old dog.
El código proporcionado crea una instancia de Pet, establece sus propiedades a partir de la entrada (nombre, especie, edad) e imprime el resultado de describe().
Tu código va en Pet.swift. main.swift contiene el código de entrada/salida proporcionado y no se puede editar.
Pruébalo tú mismo
// Código de entrada/salida suministrado: déjalo como está
var input: [String] = []
while let line = readLine() { input.append(line) }
let pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = Int(input[2])!
print(pet.describe())
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación orientada a objetos
1Clases y objetos
Trabajar con archivosDefinir clasesMétodos y selfInicializadoresLas clases son referenciasRepaso: tarjeta de biblioteca4Encapsulación
Control de accesoSolo lectura desde fueraProtección del estadoInicializadores que pueden fallarRepaso - Cuenta bancaria7Polimorfismo y genéricos
PolimorfismoConversión de tiposFunciones genéricasTipos genéricosRepaso - Calculadora de formas2Structs y tipos por valor
StructsSemántica de valoresMétodos mutablesStruct o claseRepaso - elemento del inventario5Herencia
SubclasesSobrescritura de métodosInicializadores y superfinal y jerarquíasRepaso: jerarquía de empleados8Protocolos estándar
CustomStringConvertibleEquatableComparableHashableRepaso - Ordenamiento personalizado11Proyecto: Gestión de bibliotecas
Libros y miembrosPréstamo de librosPractica por tu cuenta: Playground de Swift