Skip to content

Latest commit

 

History

History
278 lines (194 loc) · 11.3 KB

slides.adoc

File metadata and controls

278 lines (194 loc) · 11.3 KB

Introdução

1. Objetivos

  • Apresentar os fundamentos para o desenvolvimento de softwares modernos seguindo o paradigma de programação orientada a objetos (POO).

  • Paradigma: define um modelo ou padrão a ser seguido.

  • POO: define um modelo para construção de software que é seguido mundialmente.

2. Pré-requisitos

  • Lógica de programação e programação procedural/estruturada.

3. Metodologia

Aulas expositivas e práticas em laboratório, com aplicação da teoria no desenvolvimento de pequenos projetos.

4. Plano do Curso

5. Método de Avaliação

  • Média igual ou superior a 6 e pelo menos 75% de presença.

  • Atividades realizadas em sala de aula e no ambiente virtual de aprendizagem, a soma delas contabilizando 10 pontos por bimestre.

  • Uma prova teórico-prática valendo 10 pontos por bimestre.

  • A Nota Final é a média aritmética das notas dos bimestres.

  • Recuperação: Exame final teórico-prático.

6. Motivação para uso de POO

  • Desenvolver software não é uma tarefa fácil.

  • Desenvolver programas para resolver problemas reais e cada vez mais complexos.

  • Por onde começar?

  • Como transformar suas ideas em código?

7. Motivação para uso de POO

  • Como organizar o código?

  • Quais partes do programa devem ser desenvolvidas primeiro?

  • Como identificar estas partes do programa e desenvovê-las isoladamente?

  • Como unir as partes depois de prontas?

9. Motivação para uso de POO

  • Alterações indiscriminadas tornam o código um emaranhado de linhas.

  • POO, conceitos e práticas de engenharia de software:

    • minimizar a quantidade de bugs (erros);

    • permitir que o software seja desenvolvido em equipe;

    • permitir que o software seja desenvolvido em partes independentes;

    • facilitar a manutenção de código;

10. Motivação para uso de POO

  • POO, conceitos e práticas de engenharia de software:

    • reduzir custo, tempo de construção, qualidade e segurança, e outros;

    • diminuir a distância entre o que o código representa com o que de fato ele faz;

    • etc.

11. Porque POO?

  • Forma de escrever código vem evoluindo há décadas.

  • Vários paradigmas de programação têm sido desenvolvidos.

  • Programação não Estruturada

    • um código escrito usando tal paradigma é chamado pejorativamente de código espaguete

    • um exemplo é a linguagem Assembly

12. Porque POO?

chaos of cables
Figure 2. Como é organizado um código espaguete 😳. (Fonte: 123rf.com])

13. Exemplo de Código em Assembly

assembly
Figure 3. Exemplo de código em linguagem Assembly

14. Porque POO?

  • Outras formas de desenvolver programas foram então surgindo.

  • Programação Estruturada: primeiro a ser aprendido em lógica de programação.

  • Um código estruturado permite visualizar mais facilmente o fluxo lógico de execução de um programa.

15. Porque POO?

fluxograma
Figure 4. Como um algoritmo estruturado pode ser representado em um fluxograma.

16. Porque POO?

💡
O paradigma estruturado é também definido como "a atitude de escrever código com a intenção de se comunicar com humanos e não com máquinas" [Unstructured]. Ou seja, um dos grandes objetivos de um código é que ele seja legível para outros programadores.

17. Porque POO?

  • Paradigma estruturado ainda peca em muitos pontos:

    • divisão do problema shapes

    • representação da solução de um problema; problem solution

18. Porque POO?

  • Paradigma estruturado ainda peca em muitos pontos:

19. Porque POO?

  • Paradigma estruturado ainda peca em muitos pontos:

    • permitir proteger tanto dados quanto determinadas partes do código de serem usados de maneira indevida; etc.

20. Porque POO?

Listing 1. Algoritmo incorreto para somar números.
total = 0

funcao soma_numeros(){
    faça {
        imprime("Digite um número: ")
        leia(numero)
        total = total + numero
        mostra_subtotal()
    } enquanto (numero != 0)
}

funcao mostra_subtotal() {
    imprime("O total calculado até agora é de ", total)
    total = 0
}

21. Porque POO?

Programação Copia e Cola e POG

22. Porque POO?

oop to the rescue

  • Então surgiu a POO.

  • Vamos olhar o mundo ao redor.

  • Objetos têm suas características e funcionalidades

23. Porque POO?

Objeto Características Funcionalidades

Carro

Cor: Azul, Ano Fabricação: 2012, Bancos: couro

Acelerar, Frenar, Limpar parabrisas, Acender faróis

TV

Tamanho: 42", Tela: LCD, Classificação Energética: A

Ligar/Desligar, Trocar canais, Acionar Timer, Exibir guia de programação

24. Porque POO?

💡
As características de um objeto são qualidades (adjetivos) e as funcionalidades são ações (verbos), assim é fácil distinguí-las.

25. Porque POO?

shopping cart

  • Exemplo de objetos: Produtos em uma loja virtual

  • Na POO, objetos podem ser pessoas, animais e qualquer coisa que precise ser representada para resolver um problema: clientes na loja virtual

26. O que são Modelos

  • POO busca representar objetos reais ou abstratos na criação de programas.

  • Objeto real: pessoa ou veículo

  • Objeto abstrato: foto digital ou um objeto para envio de mensagens SMS.

27. O que são Modelos

  • Substantivos como "pessoa", "carro" ou "foto digital" são genéricos.

  • Nomes como "Manoel", "Fiat Uno" ou "foto do Manoel" são objetos concretos.

28. O que são Modelos

  • Em POO objetos são representados de uma forma geral usando modelos.

  • Um modelo para pessoas vai permitir representar pessoas de modo geral.

  • Permite representar o Manoel, a Maria, o João, etc.

  • Permite representar qualquer pessoa que preencha os requisitos.

29. O que são Modelos

Um modelo em POO é utilizado para representar um objeto real ou abstrato, incluindo suas características, restrições e funcionalidades.
  • As caracteristicas e funcionalidades de um objeto em POO vai depender do tipo de sistema onde tal objeto está sendo representado.

30. O que são Modelos

projeto vs casa
Figure 5. Modelo (projeto) vs Casa contruída.

31. O que são Modelos

  • Um modelo em POO define quais características o objeto terá.

  • Exemplo da casa: cor, tamanho, quantidade de quartos e banheiros.

  • O modelo não define os valores para cada uma destas características.

  • O modelo só indica que a casa precisa de uma cor.

32. O que são Modelos

  • Um projeto de engenharia civil é diferente de um modelo padrão em POO.

  • É possível representar as restrições de um projeto de engenharia.

  • Um modelo (como pessoa) não define os valores de características.

  • POO permite representar os mais diversos objetos do mundo real para um programa.

33. Classes

  • Principal conceito da programação orientada a objetos: as classes.

34. Classes

  • Modelos que representam quais características, funcionalidades e restrições tais objetos terão.

35. Classes

  • Características = qualidades

  • Funcionalidades = ações

  • Restrições = regras

36. Classes

  • A partir das classes é possível criar objetos concretos.

  • Classes podem ser identificadas a partir de substantivos.

37. Objetos

Conhecemos os objetos como eles são no mundo real. Em POO, um objeto é um elemento criado a partir de uma classe. A classe é um modelo, um molde utilizado para criar objetos daquele tipo sempre que for desejado. A classe funciona então como uma fábrica de objetos. Cada objeto possui todas as características e funcionalidades definidas pela sua classe.

Vamos utilizar como exemplo uma aplicação para uma loja que precisa cadastrar seus clientes. A partir de uma classe Cliente, pode-se criar quantos objetos forem necessários. Desta forma, cada cliente da loja será representado por um objeto diferente. Apesar de todos os clientes terem as mesmas características definidas na classe, como nome, CPF, sexo e data de nascimento, os valores para cada uma dessas características pode ser diferente para cada cliente. Isto torna os clientes diferentes uns dos outros.

Classe Pessoa e Objeto da classe Pessoa

pessoa objeto pessoa

Nas figuras acima, temos à direta uma classe Pessoa que representa pessoas de uma forma genérica para um determinado software. No lado esquerdo temos o Manoel que representa uma pessoa específica.

38. Criando Classes

  • Objetos só podem ser criados se existirem classes para serem utilizadas como modelos.

  • Java possui uma infinidade de classes para as mais diversas finalidades.

  • Ao criar um software, você precisará criar classes específicas.

  • Cada classe precisa de um nome. Adicionalmente pode ter características e/ou funcionalidades.

39. Criando Classes

Como primeiro exemplo, considere que o proprietário de uma loja de móveis e eletrodomésticos lhe pede para desenvolver um sistema para controle de vendas. O proprietário precisa inicialmente de um sistema para cadastrar clientes, produtos, funcionários e filiais da loja. Assim, identifique quais classes são necessárias e pense nas características que cada uma deve ter.

40. Criando Objetos