![Page 1: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/1.jpg)
1/30
Fundamentos de ProgramaçãoOrientada a Objetos
Abstração em computação, paradigmas de linguagens de programação. Conceitos de orientação a objetos.Aula 3
Prof. Daniel Cavalcanti Jeronymo
Universidade Tecnológica Federal do Paraná (UTFPR)Engenharia Eletrônica – 3º Período
ET43I
![Page 2: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/2.jpg)
2/30
Plano de Aula
• Abstração
• Paradigmas de linguagens de programação
• Conceitos de orientação a objetos
![Page 3: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/3.jpg)
3/30
Abstração
• “Uma abstração indica as características essenciais de um objeto que o distingue de todos osoutros tipos de objetos e entãoproporciona fronteiras conceituaisnitidamente definidas, relativas a perspectiva do espectador”
– G. Booch
Abstração Paradigmas OOP
![Page 4: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/4.jpg)
4/30
Abstração
• Foco no essencial e ignora-se o irrelevante
Abstração Paradigmas OOP
![Page 5: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/5.jpg)
5/30
Abstração
• Vamos pensar numa MESA
Abstração Paradigmas OOP
![Page 6: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/6.jpg)
6/30
Abstração
• Não foi especificado o tipo da mesa
• Madeira? Vidro? 4 pernas? 3 pernas? Pequena? Grande? Colunacentral? Pernas distribuídas nos cantos?
• Mesmo assim todos entendem o conceito e conseguemvisualizar uma
Abstração Paradigmas OOP
![Page 7: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/7.jpg)
7/30
Abstração
• Abstração de uma mesa
• Modelo abstrato:
• Um objeto apoiado no chão
• Exibe uma superfície plana para apoio de outros objetos
• O conceito é separado e independente de qualquer exemplo específico
Abstração Paradigmas OOP
![Page 8: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/8.jpg)
8/30
Abstração
• O essencial e o irrelevante dependem de contexto
• Logo, a abstração depende de contexto
• Abstração de uma mesa em gravidade zero?
Abstração Paradigmas OOP
![Page 9: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/9.jpg)
9/30
Abstração
Conceito amplamente utilizado para gerenciar complexidade
• Sistemas complexos são decompostos em componentes menores
Abstração Paradigmas OOP
![Page 10: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/10.jpg)
10/30
Abstração
Cada componente deve ter as seguintes características bem definidas:
• Comportamento (faz A)
• Responsabilidade (faz apenas A e apenas ele modifica B)
• Comunicação (para fazer A ou modificar B, deve seracessado pela interface C)
• Estado interno (B)
• Interface (C)
Interface: ponto onde dois sistemas interagem
Abstração Paradigmas OOP
![Page 11: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/11.jpg)
11/30
Abstração
Tipos Abstratos de Dados (Abstract Data Types)
• Modelos para tipos de dados definidos pelos seuscomportamentos
• Exemplo:
int A;
A = 10;
A += 21;
• Não somente primitivas mas também tipos complexos: lista, pilha, árvore, fila, etc.
Sabemos o que faz (semântica) mas não como é implementado
Abstração Paradigmas OOP
![Page 12: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/12.jpg)
12/30
Abstração
• Permite obter um modelo computacional
• Modelo: descrição de um sistema usando conceitos e linguagem de uma solução
• A solução computacional depende do paradigma de linguagemde programação
Abstração Paradigmas OOP
![Page 13: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/13.jpg)
13/30
Paradigmas de Programação
• Paradigmas principais:
• Declarativa (what) x Imperativa (how)
• Não-estruturada x Estruturada
Abstração Paradigmas OOP
![Page 14: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/14.jpg)
14/30
Paradigmas de Programação
• Paradigmas principais:
• Procedural x Orientada a Objetos
Abstração Paradigmas OOP
![Page 15: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/15.jpg)
15/30
Paradigmas de Programação
• Procedural
• O problema é separado em variáveis, estruturas de dados e subrotinas
• As subrotinas transformam dados
• Orientada a Objetos
• O problema é modelado utilizando objetos que exibemcomportamento (métodos) e dados (atributos).
• Os métodos combinam subrotinas e dados, transformandoa si mesmos.
Abstração Paradigmas OOP
![Page 16: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/16.jpg)
16/30
Paradigmas de Programação
• Procedural x Orientada a Objetos – Quando Usar?
Abstração Paradigmas OOP
![Page 17: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/17.jpg)
17/30
Conceitos OOP
• Evolução do processo de abstração nas linguagens de programação
• Assembly – abstração da linguagem de máquina
• Linguagens procedurais (C, FORTRAN, PASCAL, etc) – abstraçõesda linguagem Assembly
Nas linguagens procedurais a solução de um problema é modelada como uma série de operações que transformamdados
Abstração Paradigmas OOP
![Page 18: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/18.jpg)
18/30
Conceitos OOP
• Evolução do processo de abstração nas linguagens de programação
• Linguagens orientadas a objetos (C++, Java, C#, etc) –abstrações do problema
Nas linguagens OO a solução de um problema é modeladaem termos do próprio problema
Objetos modelam pequenas partes do problema: possuemestado e operações
Mundo Computacional
Mundo Real
Abstração Paradigmas OOP
![Page 19: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/19.jpg)
19/30
Conceitos OOP
Abstração Paradigmas OOP
![Page 20: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/20.jpg)
20/30
Conceitos OOP
• Structs
• Modelam propriedades pelo armazenamento de dados
• Como modelar um carro por estrutura?
• Objetos
• Mais completos que structs
• Modelam comportamentos
• Armazenam atributos (dados)
• Possuem métodos (funções)
• Como modelar um carro por objeto?
Abstração Paradigmas OOP
![Page 21: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/21.jpg)
21/30
Conceitos OOP
Objetos
• São variáveis
• Possuem um tipo – sua classe
• Comunicam-se por mensagens (chamadas de funções)
• Objeto cubo – atributos e métodos?
Abstração Paradigmas OOP
![Page 22: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/22.jpg)
22/30
Conceitos OOP
Objetos
Classe: Cubo
Atributos:
enum Cor lado_esquerdo;
enum Cor lado_direito;
enum Cor lado_topo;
Métodos:
girar_esquerda();
girar_direita();
Abstração Paradigmas OOP
![Page 23: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/23.jpg)
23/30
Conceitos OOP
Objetos
Instanciando a classe Cubo obtemos os objetos:
meu_cubo1 = Cubo();
meu_cubo2 = Cubo();
Abstração Paradigmas OOP
![Page 24: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/24.jpg)
24/30
Conceitos OOP
Objetos
Cada objeto é distinto:
meu_cubo1.lado_esquerdo = azul;
meu_cubo1.lado_direito = laranja;
meu_cubo1.lado_topo = vermelho;
meu_cubo2.lado_esquerdo = vermelho;
meu_cubo2.lado_direito = azul;
meu_cubo2.lado_topo = laranja;
Abstração Paradigmas OOP
![Page 25: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/25.jpg)
25/30
Conceitos OOP
Objetos
Métodos alteram apenas aquele objeto:
meu_cubo1.girar_esquerda();
Abstração Paradigmas OOP
![Page 26: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/26.jpg)
26/30
Conceitos OOP
Objetos
Métodos alteram apenas aquele objeto:
meu_cubo1.girar_esquerda();
meu_cubo2.girar_esquerda();
Abstração Paradigmas OOP
![Page 27: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/27.jpg)
27/30
Conceitos OOP
Objetos
Abstração Paradigmas OOP
![Page 28: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/28.jpg)
28/30
Conceitos OOP
• Conceitos principais
Abstração Encapsulamento
Herança Polimorfismo
Abstração Paradigmas OOP
![Page 29: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/29.jpg)
29/30
Conceitos OOP
• Orientação a objetos permite a aplicação de diversas regras
• CUIDADO!
• Teorema Fundamental da Engenharia de Software:
“Todo problema pode ser resolvido pela introdução de um nível extra de indireção”
• Corolário de Henney “… exceto o problema de muitos níveis de indireção”
Abstração Paradigmas OOP
![Page 30: Fundamentos de Programaçãodanielc/Ensino/Graduacao...1/30 Fundamentos de Programação Orientada a Objetos Abstração em computação, paradigmas de linguagens de programação](https://reader033.vdocuments.pub/reader033/viewer/2022042919/5f622f841e7b08637e4d6a23/html5/thumbnails/30.jpg)
30/30
Conceitos OOP
• Como realizar uma lista simplesmente encadeada em C?
• Usando OOP – É possível?
Abstração Paradigmas OOP