30
1/30 Fundamentos de Programação 2 Abstração em computação, paradigmas de linguagens de programação. Conceitos de orientação a objetos. Aula 5 Prof. Daniel Cavalcanti Jeronymo Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia Eletrônica – 3º Período 2015.2 ET43G

Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

1/30

Fundamentos de Programação 2Abstração em computação, paradigmas de linguagens de programação. Conceitos de orientação a objetos.Aula 5

Prof. Daniel Cavalcanti Jeronymo

Universidade Tecnológica Federal do Paraná (UTFPR)Engenharia Eletrônica – 3º Período2015.2

ET43G

Page 2: Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

2/30

Plano de Aula

• Abstração

• Paradigmas de linguagens de programação

• Conceitos de orientação a objetos

Page 3: Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

4/30

Abstração

• Foco no essencial e ignora-se o irrelevante

Abstração Paradigmas OOP

Page 5: Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

5/30

Abstração

• Vamos pensar numa MESA

Abstração Paradigmas OOP

Page 6: Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

14/30

Paradigmas de Programação

• Paradigmas principais:

• Procedural x Orientada a Objetos

Abstração Paradigmas OOP

Page 15: Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

16/30

Paradigmas de Programação

• Procedural x Orientada a Objetos – Quando Usar?

Abstração Paradigmas OOP

Page 17: Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

19/30

Conceitos OOP

Abstração Paradigmas OOP

Page 20: Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

25/30

Conceitos OOP

Objetos

Métodos alteram apenas aquele objeto:

meu_cubo1.girar_esquerda();

Abstração Paradigmas OOP

Page 26: Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

27/30

Conceitos OOP

Objetos

Abstração Paradigmas OOP

Page 28: Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

28/30

Conceitos OOP

• Conceitos principais

Abstração Encapsulamento

Herança Polimorfismo

Abstração Paradigmas OOP

Page 29: Fundamentos de Programação 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

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ção 2paginapessoal.utfpr.edu.br/.../et43g-2015.2/Aula5.pdf · Engenharia Eletrônica –3º Período 2015.2 ET43G. 2/30 Plano de Aula •Abstração •Paradigmas

30/30

Conceitos OOP

• Como realizar uma lista simplesmente encadeada em C?

• Usando OOP – É possível?

Abstração Paradigmas OOP