Dominando-A-Linguagem-de-Programacao-Swift

Projeto 1: Gerenciamento de Pedidos em Swift Playground

Este projeto demonstra um sistema simples de gerenciamento de pedidos em Swift, usando o paradigma de Programação Orientada a Objetos (POO) e explorando conceitos como controle de fluxo, coleções, funções e closures, enums e structs, bem como conceitos básicos de concorrência.

Descrição: Neste projeto, um pedido é representado por uma classe chamada Order, que possui um identificador, uma lista de produtos e um status (usando o enum OrderStatus). Produtos são representados por uma struct Product. A classe Order contém funções para calcular o preço total dos produtos, bem como para atualizar o status do pedido. O projeto também inclui funções para imprimir os detalhes de um pedido e simula uma atualização de status.

Este projeto é útil para entender como os princípios da POO podem ser aplicados para modelar objetos e suas interações em um contexto do mundo real, como o gerenciamento de pedidos em uma loja online.

Projeto 2: Gerenciamento de Tarefas com Programação Orientada a Protocolos em Swift Playground

Este projeto demonstra um sistema de gerenciamento de tarefas em Swift, usando o paradigma de Programação Orientada a Protocolos (POP) e explorando conceitos como controle de fluxo, coleções, funções e closures, enums e structs, bem como a criação de protocolos para definir comportamentos.

Descrição: Neste projeto, tarefas são representadas usando protocolos. Existem dois tipos de tarefas: tarefas comuns (implementadas na struct CommonTask) e tarefas importantes (implementadas na struct ImportantTask). Ambas as structs aderem ao protocolo Task, que define um título, uma prioridade e uma função perform() para executar a tarefa.

O projeto também inclui uma função executeTasks que executa tarefas de acordo com a prioridade e uma demonstração de filtragem de tarefas por prioridade alta.

Este projeto ilustra como o paradigma de Programação Orientada a Protocolos pode ser usado para criar tipos flexíveis e extensíveis, permitindo a adição fácil de novos tipos de tarefas com comportamentos específicos sem modificar o código existente.