programação orientada a objetos (dpadf 0063)bruno/disciplinas/poo/slides/aula1_motivacao... ·...

43
Programação Orientada a Objetos (DPADF 0063) Aula 1 Motivação e Introdução Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Upload: dinhhanh

Post on 01-Feb-2018

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Programação Orientada a Objetos

(DPADF 0063) Aula 1 – Motivação e Introdução

Universidade Federal de Santa Maria

Colégio Agrícola de Frederico Westphalen

Curso Superior de Tecnologia em Sistemas para Internet

Prof. Bruno B. Boniati – www.cafw.ufsm.br/~bruno

Page 2: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Objetivos

• Capacitar o aluno a implementar

algoritmos para a solução de problemas

computacionais em uma linguagem de

programação orientada a objetos.

Page 3: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Programa

• Unidade 1 – Orientação a Objetos (OO)

▫ Conceitos de OO: abstração, classes, objetos, encapsulamento,

herança e polimorfismo.

▫ Introdução à programação OO.

• Unidade 2 – Implementação em Java

▫ Fundamentos da linguagem Java.

▫ Implementação de classes em Java. Interação entre objetos.

▫ Reaproveitamento de código. Manipulação de coleções de objetos.

▫ Desenvolvimento de interfaces gráficas através da API Swing.

▫ Tratamento de exceções.

▫ Conexão com bancos de dados através da API JDBC. Applets.

Threads.

Page 4: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Material de Aula

• Livro Texto:

• Página da Disciplina:

www.cafw.ufsm.br/~bruno/disciplinas/poo

• Recomenda-se a utilização de um caderno e um pen-drive

Santos, R., Introdução à Programação

Oriendada a Objetos Usando Java.

Rio de Janeiro: Campus, 2003.

Page 5: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Avaliação (individual)

• Avaliação 1 (50% do semestre)

▫ Sistematização 1 (Peso 3)

▫ Trabalho 1 (Peso 2)

• Avaliação 2 (50% do semestre)

▫ Sistematização 2 (Peso 3)

▫ Trabalho 2 (Peso 2)

Page 6: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Programação Orientada a Objetos

(DPADF 0063) Aula 1 – Motivação e Introdução

Universidade Federal de Santa Maria

Colégio Agrícola de Frederico Westphalen

Curso Superior de Tecnologia em Sistemas para Internet

Prof. Bruno B. Boniati – www.cafw.ufsm.br/~bruno

Page 7: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Programação Orientada a Objetos

Page 8: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Sequência de Passos x Modelos

• Programação como sequência de passos

▫ Paradigma tradicional onde um problema é

resolvido a partir de um início e fim bem definidos

e eventualmente dividido em sub-rotinas;

• Programação utilizando-se de objetos

▫ O paradigma da orientação a objetos considera

que os dados a serem processados e os

mecanismos de processamento dos dados devem

ser considerados em conjunto;

Page 9: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

A análise Orientada a Objetos baseia-se em conceitos que

começamos a aprender no jardim da infância: objetos e

atributos, classes e membros, o todo e suas partes.

Por que demorou tanto tempo para que aplicássemos

esses conceitos à análise e desenvolvimento de sistemas

de informação é uma coisa que qualquer um pode

adivinhar – talvez estivéssemos ocupados demais

“seguindo o fluxo” durante o apogeu da análise estruturada

para considerarmos alternativas

Coad & Yourdon

Page 10: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Sequência de Passos x Objetos

• Sequência de passos

• Objetos

Início

Fim

Área de

Variáveis - String nomeDoCorrentista;

- float saldo;

- char indCcontaEspecial;

+ abreConta(nome, depósito, indEspecial)

+ abreContaSimples(nome)

+ deposita(valor)

+ retira(valor)

+ mostraDados()

+ alteraNomeTitular(novoNome)

ContaBancariaSimples

Conta1

Conta2

Conta3

Área de

Atributos

Área de

Operações

Aplicação

Page 11: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Um pouco de história sobre POO

• SIMULA - 1ª Linguagem Orientada a Objetos;

• Década de 70 surge a linguagem SmallTalk

(considerada até hoje única linguagem puramente

orientada a objetos);

• Década de 80 ... Rápida evolução ... Surgimento

de Ada e C++

• Década de 90 ... Java

1967

Anos 70

Anos 80

Anos 90

Page 12: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Mais um pouco de história ...

• O uso da Tecnologia de Objetos como metodologia

básica para desenvolvimento de sistemas (abrangendo

todo o ciclo ... desde análise até o código) é uma prática

que passou a ser difundida na década de 80 com a

publicação dos trabalhos do pesquisador Grady Booch.

• A tecnologia de objetos veio para ficar!

• Seus conceitos e técnicas imprimem maior qualidade,

produtividade e profissionalismo na construção de

software.

Page 13: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Orientação a objetos é necessária?

• Nem sempre ...

• Há situações onde o modelo de uma tarefa a ser

executada é tão simples que a criação de uma classe

para representá-lo torna o problema mais complicado ...

• Uma equação de segundo grau, por exemplo ...

Fórmula de Bhaskara

Page 14: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Bhaskara ... Estruturado x OO public class Bhaskara {

private int a, b, c;

Bhaskara(int a, int b, int c) {

this.a = a;

this.b = b;

this.c = c;

}

public double solveX1() {

double delta = (b*b)-4*(a)*(c);

return -b + Math.sqrt(delta) / 2*a;

}

public double solveX2() {

double delta = (b*b)-4*(a)*(c);

return -b - Math.sqrt(delta) / 2*a;

}

public static void main (String args[]) {

Bhaskara bascara = new Bhaskara(3,-7,2);

System.out.println(bascara.solveX1());

System.out.println(bascara.solveX2());

}

}

#include <stdio.h>

#include <math.h>

double bascaraX1(int a, int b, int c) {

double delta = (b*b)-4*(a)*(c);

return -b + sqrt(delta) / 2*a;

}

double bascaraX2(int a, int b, int c) {

double delta = (b*b)-4*(a)*(c);

return -b - sqrt(delta) / 2*a;

}

int main(int argc, char** argv)

{

int a, b, c;

printf("Digite a, b e c ... \n");

scanf("%d",&a);

scanf("%d",&b);

scanf("%d",&c);

printf(“X1 = %f", bascaraX1(a, b, c));

printf(“X2 = %f", bascaraX2(a, b, c));

return 0;

}

Código estruturado em C Código orientado a objetos em Java

Page 15: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Orientação a objetos é necessária?

• Em muitas situações ...

• Imagine uma aplicação “mundo real” repleta de janelas que

apresentam as mesmas funcionalidades e se compõem de uma

infinidade de outros controles gráficos que se repetem ao longo da

aplicação (botões, caixas de texto, janelas de diálogo ...);

• Imagine simular o movimento de espermatozoides a procura de um

óvulo utilizando a programação estruturada normal ... De forma que

cada célula (dentre as milhões) tenha atributos diferentes

(velocidade, tamanho, agilidade ...)

Page 16: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Papéis dos programadores OO

• Programador de Classes

▫ Criam novas classes;

▫ Tarefa mais abstrata e específica (não há preocupação com

interface, por exemplo);

▫ Preocupação com questões de segurança;

▫ Deve prever a utilização da classe para diferentes

aplicações;

• Programadores Usuários

▫ Utilizam as classes disponíveis, combinando seus objetos e

criando aplicações;

Page 17: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Conceitos Fundamentais

Page 18: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Núcleo mínimo de uma linguagem OO

• Segundo ...

▫ Grady Booch: Coming of Age in an Object-Oriented

World. IEEE Software 11(6): 33-41 (1994).

• Uma linguagem orientada a objetos deve oferecer:

Abstração

Encapsulamento

Herança

Polimorfismo

Page 19: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Classes x Objetos

Page 20: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Abstração

• Habilidade de se concentrar nos aspectos

essenciais de um contexto qualquer, ignorando

características menos importantes ou

acidentais;

• Na POO, uma classe é uma abstração de

entidades existentes no domínio do sistema de

software;

Page 21: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

O que é uma classe

• A classe é a unidade básica de trabalho em um

programa orientado a objetos;

• Representa um modelo abstrato a partir do

qual são criadas instâncias;

• É uma coleção de dados (atributos) e

operações (métodos) que manipulam tais

dados

Page 22: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

O que é uma classe (continuação)

• A classe é a descrição de um tipo de objeto;

• Objeto está para classe da mesma forma que

variável está para tipo de dado.

Data

- dia : int;

- mês : int;

- ano : int

+ porExtenso() : String;

+ diaDaSemana() : String;

Classe Data

Independência

do Brasil

dia = 7;

mês = 9;

ano = 1822;

Revolução

Farroupilha

dia = 20;

mês = 9;

ano = 1835;

Fundação da

UFSM

dia = 14;

mês = 12;

ano = 1960;

Objetos da

Classe Data

Page 23: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

O que compõe uma classe

• Atributos

▫ São os dados (simples ou compostos) que

caracterizam objetos daquela classe;

▫ São armazenadas em variáveis;

▫ Constituem o estado do objeto.

• Operações

▫ São os métodos (procedimentos ou funções) que

manipulam os dados;

Page 24: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Exemplo de classe ...

Cachorro

- cor : string

- sabeEscrever : boolean;

+ correr() : void;

+ latir() : void;

+ escrever() : void;

public class Cachorro {

private String cor;

private boolean sabeEscrever;

public Cachorro(String c, boolean se) {

cor = c;

sabeEscrever = se;

}

public void correr() {}

public void latir() {

System.out.println("Au, au");

}

public void escrever() {

if (sabeEscrever) {

System.out.println("Ola");

}

}

}

Atributos

Métodos

Page 25: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Ocultação de informações

Page 26: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Encapsulamento

• Consiste na separação dos aspectos internos e

externos de um objeto;

• É utilizado para impedir o acesso direto ao

estado de um objeto (seus atributos) ...

disponibilizando apenas métodos para validar e

efetivar suas alterações.

Page 27: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Encapsulamento (cont.)

• Permite ignorar os detalhes de implementação

(de como as coisas funcionam internamente)

permitindo ao desenvolvedor idealizar seu

trabalho em um nível mais alto de abstração;

• É o termo formal que descreve a junção de

métodos e dados dentro de um objeto de

maneira que acesso a estes dados só seja

permitido por meio dos próprios métodos do

objeto;

Page 28: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

O telefone ...

• Ninguém precisa conhecer

detalhes dos circuitos de

um telefone para utilizá-lo;

• Sua carcaça empasula os

detalhes e nos provê uma

interface amigável ...

botões, monofone, sinais

de tom ...

Page 29: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

O colchão ...

• Ninguém está preocupado

em como o colchão foi

construído na hora de

dormir;

• Basta ele oferecer uma

interface amigável que

todos saberão o que fazer

com ele.

Page 30: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Um terminal bancário ...

• Se um banco reescrever o

software (aperfeiçoando-o)

ele não precisa avisar

todos os clientes ...

• A interface não mudou (o

que mudou foram detalhes

de implementação ...)

Page 31: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Conceitos Fundamentais

Page 32: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Herança (ou generalização)

• É o mecanismo pelo qual uma classe pode

estender outra aproveitando seus

comportamentos (métodos) e estados

possíveis (atributos);

• Permite que elementos mais específicos

incorporem a estrutura e o comportamento de

elementos mais genéricos;

Page 33: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Herança (ou generalização)

• Quando um objeto da classe filho é

criado ele herda todas as

propriedades da classe pai, além

das propriedades definidas na

própria classe filho;

• O homem naturalmente

pensa dessa forma ...

Animal

Mamífero

Canino

Doméstico

Perdigueiro Poodle

Selvagem...

Felino...

Réptil...

Page 34: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

É um tipo de Cachorro Beagle

É um tipo de ...

• Um objeto de uma subclasse (classe filha) é

um tipo de objeto da superclasse (classe pai);

• Um objeto “Poupança”, classe filha de “Conta”,

por exemplo ... É um tipo de conta;

Lancha

É um tipo de veículo

Page 35: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Não é um tipo de ...

• Se um objeto de uma subclasse não possui

todos os atributos e operações da superclasse,

ela (classe deste objeto) naõ pode ser uma

subclasse

Gato não é coelho!

Page 36: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Várias formas

Page 37: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Polimorfismo

• Permite que uma mesma operação possa ser

definida para diferentes tipos de classes, e cada

uma delas a implementa como quiser;

• Permite a um mesmo objeto se manifestar de

diferentes formas;

Page 38: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Polimorfismo (cont.)

• Princípio pelo qual duas ou mais classes derivadas de

uma mesma superclasse podem invocar métodos que têm

a mesma assinatura (lista de argumentos e tipo de

retorno) mas com comportamentos distintos

(especializados em cada subclasse).

• A decisão sobre qual método deve ser

selecionado, de acordo com o tipo da classe

derivada, é tomada em tempo de execução.

Page 39: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Embarque em um veículo

• Barcos, trens e caminhões são veículos que possuem

operações de embarque ...

• Em cada tipo de veículo a operação de embarque é

diferenciada ...

Page 40: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Exercícios para fixação

Page 41: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Portas lógicas

• Uma porta lógica é um CI que encapsula operações simples entre

um, dois ou mais sinais elétricos. São exemplos:

• Essa atividade consiste em testar as interfaces de dois circuitos

eletrônicos integrado (CI 4081 e CI 4071) indicando ao final da

tarefa que tipo de porta lógica eles implementam. A interface dos

CD é a seguinte:

Page 42: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Comanda de um restaurante

• Imagine que você tenha sido contratado para modelar e

informatizar a comanda de um restaurante; ▫ Que tipo de informações seriam pertinentes armazenar sobre a

comanda?

▫ Que tipo de operações a comanda deveria oferecer a seus

utilizadores?

Page 43: Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula1_motivacao... · •SIMULA - 1ª Linguagem Orientada a Objetos; ... •A classe é a descrição de

Pessoa

• Tente abstrair modelos de pessoas para diferentes

situações ... ▫ Um funcionário de uma empresa;

▫ Um paciente de um hospital;

▫ Um aluno de uma universidade;