Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pilares e benefícios da POO

Pilares e benefícios da POO

Programação Orientada a Objetos - POO
Pilares e benefícios da POO

Avatar for Alcione Morais

Alcione Morais

August 29, 2025
Tweet

More Decks by Alcione Morais

Other Decks in Education

Transcript

  1. Programação Orientada a Objetos Aula 20/05 O que OO e

    POO Aula 27/05 Pilares e benefícios da POO Aula 03/06 Prática no Lab 1 sobre os Pilares da POO Aula 10/05 Trabalho Avaliativo 2 IFSUL – Sapiranga | Programação Orientada a Objetos
  2. Relembrando a aula anterior O que é OO e POO

    Comparando com Programação Estruturada Importância do POO Pilares do POO Abstração Encapsulamento Herança Polimorfismo Benefícios da POO Reutilização de código Manutenção facilitada Extensibilidade Segurança Exercícios 3 Roteiro IFSUL – Sapiranga | Programação Orientada a Objetos
  3. A Orientação a Objetos – OO, é um paradigma de

    programação; Forma diferente de pensar e construir algoritmos e programas para computadores; • A Orientação a Objetos nasce com a linguagem Smalltalk, em 1970; Descendente da linguagem Simula; 4 O que é POO IFSUL – Sapiranga | Programação Orientada a Objetos
  4. A Programação Orientada a Objetos (POO) é praticada com novos

    conceitos: ◦ Modelagem de Objetos; ◦ Atributos e comportamentos; Tudo passa a ser assumido como objetos, tal como acontece no mundo real; ◦ Isso trás diferenças substanciais quanto à forma de se pensar na construção de algoritmos! 5 O que é POO IFSUL – Sapiranga | Programação Orientada a Objetos
  5. Um Vamos imaginar um sistema orientado a objetos; • Em

    um primeiro momento, não estamos preocupados com a construção de cada objeto, mas com forma em que os objetos interagem; Youtube: https://www.youtube.com/watch?v=GvnEBX9aedY (Rube Goldberg Machine) 6 O que é POO IFSUL – Sapiranga | Programação Orientada a Objetos Jerry Usuário Tom Programador
  6. Um paradigma de programação que organiza o software em objetos,

    que são instâncias de classes. Objetos representam entidades do mundo real, com atributos (características) e métodos (comportamentos). 7 O que é POO IFSUL – Sapiranga | Programação Orientada a Objetos
  7. 8 IFSUL – Sapiranga | Programação Orientada a Objetos Figura

    retirada do site: https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264 Figura 1. Estruturada x Orientação a Objeto Comparando com Programação Estruturada
  8. Programação Estruturada: Foca em funções e procedimentos. Três estruturas: sequência,

    decisão ou seleção e iteração; Dificuldades na soluções de mais complexos; Programação Orientada a Objetos: Foca em objetos e suas interações. Os programadores podem abstrair um programa como uma coleção de objetos que interagem entre si. 9 Comparando com Programação Estruturada IFSUL – Sapiranga | Programação Orientada a Objetos
  9. Exemplo Sistema de gerenciamento de uma biblioteca. Em vez de

    escrever funções para cada ação ex.: Adicionar livro, emprestar livro), Criamos objetos como Livro, Usuário e Empréstimo, que interagem entre si. 10 IFSUL – Sapiranga | Programação Orientada a Objetos Comparando com Programação Estruturada
  10. Facilita a organização do código. Promove a reutilização de código.

    Melhora a manutenção e a escalabilidade do software 11 Importância do POO IFSUL – Sapiranga | Programação Orientada a Objetos
  11. Simplificar a complexidade do mundo real, focando apenas nos aspectos

    relevantes. Uma classe Carro com atributos como modelo, cor e métodos como acelerar() e frear(). 14 Abstração IFSUL – Sapiranga | Programação Orientada a Objetos
  12. Um carro pode ser abstraído como um objeto com características

    e comportamentos, sem precisar detalhar como o motor funciona. 15 Abstração IFSUL – Sapiranga | Programação Orientada a Objetos
  13. É a habilidade de esconder as características intrínsecas de um

    dado objeto de outros objetos; É a técnica de proteger os dados (atributos) e os códigos que operam sobre os dados (métodos) em uma única unidade chamada classe. 16 Encapsulamento IFSUL – Sapiranga | Programação Orientada a Objetos
  14. Proteger os detalhes internos de um objeto, expondo apenas uma

    interface clara. Uso de métodos get e set para acessar e modificar atributos privados. Evita que dados sejam alterados de forma incorreta. 17 Encapsulamento IFSUL – Sapiranga | Programação Orientada a Objetos
  15. é um mecanismo pelo qual uma nova classe, chamada classe

    derivada ou subclasse, pode adquirir as propriedades de uma classe existente, conhecida como classe base ou superclasse. 18 Herança IFSUL – Sapiranga | Programação Orientada a Objetos
  16. Permitir que uma classe herde atributos e métodos de outra

    classe. Uma classe Galinha que herda de uma classe Animal. Promove a reutilização de código e a organização hierárquica. 19 Herança IFSUL – Sapiranga | Programação Orientada a Objetos
  17. Significa “muitas formas”, é a capacidade de um método para

    fazer coisas diferentes com base no objeto que o invoca. 20 Polimorfismo IFSUL – Sapiranga | Programação Orientada a Objetos
  18. Capacidade de um objeto ser referenciado de múltiplas formas. Um

    método fazerSom() que se comporta de maneira diferente para objetos Galinha, Cachorro e Gato. Flexibilidade para tratar objetos de forma uniforme 21 Polimorfismo IFSUL – Sapiranga | Programação Orientada a Objetos
  19. 22 Polimorfismo IFSUL – Sapiranga | Programação Orientada a Objetos

    class Animal { public void fazerSom() { System.out.println("Som genérico."); } } class Galinha extends Animal { @Override public void fazerSom() { System.out.println(“Piu!"); } }
  20. 23 Polimorfismo IFSUL – Sapiranga | Programação Orientada a Objetos

    class Cachorro extends Animal { @Override public void fazerSom() { System.out.println("Au Au!"); } } class Boi extends Animal { @Override public void fazerSom() { System.out.println(“BUU!"); } }
  21. 24 Resumindo IFSUL – Sapiranga | Programação Orientada a Objetos

    Abstração : • Envolve a simplificação de objetos complexos do mundo real; • Para representá-los de forma mais simples no código; • Se desdobra em: Classes: • São conjuntos de objetos que possuem o mesmo tipo; Objetos: • São instâncias das classes; Encapsulamento : • É a habilidade de esconder as características intrínsecas de um dado objeto de outros objetos; Herança : • Permite a criação de classes derivadas (subclasses) que herdam atributos e métodos de uma classe base (superclasse); Polimorfismo : • É a propriedade de duas ou mais classes derivadas de uma mesma superclasse responderem a mesma mensagem, mas cada subclasse responde de uma forma diferente da outra classe derivada.
  22. Classes e objetos podem ser reutilizados em diferentes partes do

    sistema. A classe Animal pode ser usada para criar diferentes tipos de animais. 27 Reutilização de código IFSUL – Sapiranga | Programação Orientada a Objetos
  23. Código organizado e modular é mais fácil de manter e

    atualizar. Corrigir um bug na classe Animal afeta todas as subclasses. 28 Manutenção facilitada IFSUL – Sapiranga | Programação Orientada a Objetos
  24. Novas funcionalidades podem ser adicionadas sem modificar o código existente.

    Adicionar uma nova classe Pássaro que herda de Animal. 29 Extensibilidade IFSUL – Sapiranga | Programação Orientada a Objetos
  25. Encapsulamento protege os dados e evita acesso indevido. Atributos privados

    só podem ser acessados por métodos públicos. 30 Segurança IFSUL – Sapiranga | Programação Orientada a Objetos
  26. • Encapsulamento • Vamos criar uma classe Pessoa com atributos

    e métodos encapsulados. • Usaremos modificadores de acesso (private) para encapsular os atributos e métodos getters e setters para acessá-los. 32 Demonstração IFSUL – Sapiranga | Programação Orientada a Objetos
  27. 33 Demonstração IFSUL – Sapiranga | Programação Orientada a Objetos

    class Pessoa { // Atributos (Abstração) private String nome; private int idade; // Construtor public Pessoa(String nome, int idade) { this.nome = nome; this.idade = idade; } // Continua ..
  28. 34 Demonstração IFSUL – Sapiranga | Programação Orientada a Objetos

    // Métodos (Encapsulamento) public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public int getIdade() { return idade; } public void setIdade(int idade) { this.idade = idade; } // continua
  29. 35 Demonstração IFSUL – Sapiranga | Programação Orientada a Objetos

    // Método adicional , com implementação (concreto) public void apresentar() { System.out.println("Olá, meu nome é " + nome + " e tenho " + idade + " anos."); } } //fecha classe Pessoa // Uso da Classe Pessoa: public class Main { public static void main(String[] args) { Pessoa pessoa = new Pessoa(“Alcione", 33); pessoa.apresentar(); // Saída: Olá, meu nome é Alcione e tenho 33 anos. }
  30. 36 Demonstração IFSUL – Sapiranga | Programação Orientada a Objetos

    •Herança • Agora, vamos criar uma classe Funcionario que herda da classe Pessoa. A classe Funcionario terá um atributo adicional (cargo) e um método específico (trabalhar).
  31. 37 Demonstração IFSUL – Sapiranga | Programação Orientada a Objetos

    public class Funcionario extends Pessoa { // Atributo adicional private String cargo; // Construtor public Funcionario(String nome, int idade, String cargo) { super(nome, idade); // Chama o construtor da classe Pessoa this.cargo = cargo; } // continua
  32. 38 Demonstração IFSUL – Sapiranga | Programação Orientada a Objetos

    // Getter para o cargo public String getCargo() { return cargo; } // Setter para o cargo public void setCargo(String cargo) { if (cargo != null && !cargo.isEmpty()) { this.cargo = cargo; } else { System.out.println("Cargo inválido!"); } } // continua
  33. 39 Demonstração IFSUL – Sapiranga | Programação Orientada a Objetos

    •Polimorfismo • Permite que métodos se comportem de maneira diferente em classes derivadas. No exemplo acima, o método apresentar foi sobrescrito na classe Funcionario para incluir o cargo.
  34. 40 Demonstração IFSUL – Sapiranga | Programação Orientada a Objetos

    // Método específico de Funcionario public void trabalhar() { System.out.println(getNome() + " está trabalhando como " + cargo + "."); } // Sobrescrevendo o método apresentar da classe Pessoa @Override public void apresentar() { System.out.println("Nome: " + getNome() + ", Idade: " + getIdade() + ", Cargo: " + cargo); } }
  35. 41 Demonstração IFSUL – Sapiranga | Programação Orientada a Objetos

    // Exemplo de como usar as classes criadas: public class Main { public static void main(String[] args) { // Testando a classe Funcionario Funcionario funcionario1 = new Funcionario(“Ana", 29, "Desenvolvedora"); funcionario1.apresentar(); // Saída: Nome é Ana e eu sou um Desenvolvedora. funcionario1.trabalhar(); // Saída: Ana está trabalhando como Desenvolvedora. } }
  36. 43 Retomando a aula de hoje. IFSUL – Sapiranga |

    Programação Orientada a Objetos A aula trabalhamos a introdutória sobre POO, destacando seus pilares e benefícios; Abordamos duas demonstrações de código para ajuda a consolidar o entendimento do conteúdo;
  37. 44 Exercícios. IFSUL – Sapiranga | Programação Orientada a Objetos

    • Link para acessar o moodle e fazer o quiz sobre POO; • Prática no laboratório: Link o desafio 1. Grupo 1 • Prática no laboratório: Link o desafio 2. Grupo 2 • Prática no laboratório: Link o desafio 3. Grupo 3 • Prática no laboratório: Link o desafio 4. Grupo 4 Mandar as duvidas no fórum da turma e presencialmente na sala de entendimento e no lab. na terça quarta e quinta.
  38. Programação Orientada a Objetos Aula 27/05 Pilares e benefícios da

    POO Aula 03/06 Prática no Lab 1 sobre os Pilares- POO Aula 03/06 Trabalho Avaliativo Aula 10/05 Construindo uma aplicação completa 45 IFSUL – Sapiranga | Programação Orientada a Objetos
  39. 46 Referências IFSUL – Sapiranga | Programação Orientada a Objetos

    FÉLIX, Rafael (org.). Programação orientada a objetos. São Paulo, SP: Pearson, 2016. E-book. Disponível em: https://plataforma.bvirtual.com.br. Acesso em: 11 mar. 2025. SEPE, Adriano; MAITINO NETO, Roque. Programação orientada a objetos. 1. ed. [S.l.]: Kroton, 2017. E-book. Disponível em: https://plataforma.bvirtual.com.br. Acesso em: 11 mar. 2025. DEVMEDIA. Os 4 pilares da Programação Orientada a Objetos. Disponível em: https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264. Acesso em: 10 out. 2023.