Recapitulação - Item de Inventário
Parte da seção Programação Orientada a Objetos do Journey de Swift da Coddy. Lição 11 de 57.
Desafio
MédioComplete a struct StockItem com as propriedades name e quantity. Adicione os métodos mutantes receive(_:) (adiciona) e ship(_:) (subtrai somente quando há quantidade suficiente em estoque, retornando se isso ocorreu), e um método não mutante label() que retorna tea: 12 ou tea: out of stock para a quantidade 0.
Depois, complete process(start:commands:): ele cria o item, mantém uma cópia dele chamada opening antes do primeiro comando, aplica os comandos e retorna uma linha para cada envio recusado (cannot ship 5), depois now seguido pelo rótulo do item e was seguido pelo rótulo de opening.
O código fornecido lê o item como name,quantity e os comandos +n ou -n, e imprime cada linha retornada.
Seu código deve ficar em StockItem.swift e Functions.swift. main.swift contém o código fornecido de entrada/saída e não pode ser editado.
Experimente você mesmo
// Código de entrada/saída fornecido: mantenha-o como está
var input: [String] = []
while let line = readLine() { input.append(line) }
let p = input[0].split(separator: ",").map(String.init)
let item = StockItem(name: p[0], quantity: Int(p[1])!)
for line in process(start: item, commands: Array(input.dropFirst())) { print(line) }
Todas as lições de Programação Orientada a Objetos
1Classes e Objetos
Trabalhando com ArquivosDefinindo ClassesMétodos e selfInicializadoresClasses são ReferênciasRevisão - Cartão da Biblioteca4Encapsulamento
Controle de AcessoSomente Leitura ExternaProtegendo o EstadoInicializadores que Podem FalharRevisão - Conta Bancária7Polimorfismo e Genéricos
PolimorfismoConversão de TiposFunções GenéricasTipos GenéricosRevisão - Calculadora de Formas2Structs e Tipos de Valor
StructsSemântica de ValorMétodos MutáveisStruct ou ClasseRecapitulação - Item de Inventário5Herança
SubclassesSobrescrita de métodosInicializadores e superfinal e hierarquiasRecapitulação - Hierarquia de funcionários8Protocolos Padrão
CustomStringConvertibleEquatableComparableHashableRecapitulação - Ordenação Personalizada11Projeto: Gerenciamento de Biblioteca
Livros e MembrosEmpréstimo de LivrosPratique por conta própria: Playground de Swift