2 acetatos por página

Propaganda
Apresentac~ao
Java { conceitos Basicos
Abordagem Orientada a Objectos
Objectivo:
I aplicac~oes que resolvem problemas de elevada complexidade
I facilitar a utilizac~ao de equipas de programadores
I tecnicas de desenvolvimento rapido de aplicaco~es
Abordagem:
I decompor o problema em partes mais simples e independentes
I cada equipa trabalha na implementac~ao da soluc~ao de uma parte do
problema. Interacc~ao mnima com as outras equipas
I os \modulos" desenvolvidos s~ao reutilizaveis em outras aplicac~oes
Rui Camacho
Apresentac~ao
Java { conceitos Basicos
Linguagens de
Alto-n
vel
Complementos de Programac~ao e Algoritmos { LEIC
iniciais
Limita
c~
oes:
I falta de estruturac~ao
I nenhuma especie de encapsulamento
I nenhum aspecto de abstracc~ao
Exemplos:
implementaco~es iniciais de Fortran e Basic
Rui Camacho
Complementos de Programac~ao e Algoritmos { LEIC
Apresentac~ao
Java { conceitos Basicos
Procedimentos
Blocos de codigo com variaveis locais que implementam algoritmos
ou operaco~es elementares de algoritmos. Acesso atraves de
chamada pelo nome e passagem de par^ametros.
Vantagens:
I estruturac~ao/modularidade
I certo grau de encapsulamento
I certo grau de abstracc~ao
Rui Camacho
Apresentac~ao
Java { conceitos Basicos
Procedimentos
Complementos de Programac~ao e Algoritmos { LEIC
(cont.)
Limita
c~
oes:
I nomes de func~oes n~ao podem ser duplicados (ex: a func~ao de inserir
em estruturas de dados diferentes requer func~oes com nomes
diferentes)
I dados manipulados por diferentes func~oes (ex:
de pop e push) s~ao declarados globais
stack com operac~
oes
I n~ao existe instanciac~ao. N~ao se pode replicar dinamicamente uma
estrutura de dados com operac~oes de manutenc~ao associadas.
Exemplos: funco~es do C ou procedimentos/func~oes do Pascal
Rui Camacho
Complementos de Programac~ao e Algoritmos { LEIC
Apresentac~ao
Java { conceitos Basicos
Modulos
Blocos que ecapsulam dados e procedimentos. Uma interface
especica o que e visvel do exterior.
Vantagens:
I estruturac~ao/modularidade
I encapsulamento de dados e procedimentos
I certo grau de abstracc~ao
Limita
c~
oes:
I n~ao ha instanciac~ao. So existe um modulo de cada \especie". N~ao
se pode replicar dinamicamente um modulo
Rui Camacho
Apresentac~ao
Java { conceitos Basicos
Complementos de Programac~ao e Algoritmos { LEIC
Tipos Abstractos de Dados
Conjunto de dados com operaco~es de manipulac~ao associadas.
Vantagens:
I abstracc~ao
I instanciac~ao
Limita
c~
oes:
I n~ao tem algumas caractersticas importantes de uma linguagem
O.O. (ex: heranca)
Exemplos: Stack com operaco~es de pop, push, top etc
Rui Camacho
Complementos de Programac~ao e Algoritmos { LEIC
Apresentac~ao
Java { conceitos Basicos
Objectos
Entidades que cont^em dados e procedimentos e est~ao organizadas
hierarquicamente. Utilizam um mecanismo de envio de mensagens.
Vantagens:
I
I
I
I
I
abstracc~ao/instanciac~ao
heranca
modularidade
encapsulamento
polimorsmo
Limita
c~
oes:
I
:-)
Rui Camacho
Apresentac~ao
Java { conceitos Basicos
Complementos de Programac~ao e Algoritmos { LEIC
Exemplo
Problema:
quero enviar um ramo de ores a minha m~ae que mora numa outra
cidade
Solu
c~
ao:
vou a minha orista (donaFlor) e digo-lhe \envie um ramo de rosas
a Sra ... que mora em ..."
(do livro \An introduction to Object-Oriented Programming" - Tomothy Budd)
Rui Camacho
Complementos de Programac~ao e Algoritmos { LEIC
Apresentac~ao
Java { conceitos Basicos
Perspectiva O.O. do exemplo
I
para desencadear uma acc~ao transmito uma mensagem a um agente
I
I
a acc~ao e iniciada pela recepc~ao de uma mensagem
I
I
(objecto)
a mensagem tem um receptor e pode ter argumentos: tipo de ores,
nome do destinatario, morada
uma vez aceite a mensagem e da responsabilidade do receptor realizar a
acc~ao
desconheco os pormenores que o receptor usa para realizar a acc~ao
(encapsulamento)
Rui Camacho
Apresentac~ao
Java { conceitos Basicos
Perspectiva O.O. do exemplo
I
I
I
Complementos de Programac~ao e Algoritmos { LEIC
(cont.)
assumo caractersticas e comportamentos tpicos da categoria (Florista) a
que pertence a inst^ancia (donaFlor) (instanciac~ao)
assumo ainda caractersticas de categorias mais gerais (ex: Vendedores)
das quais as Floristas s~ao uma categoria particular. (heranca)
a realizac~ao da tarefa pela donaFlor pode envolver outros agentes
(objectos)
Rui Camacho
Complementos de Programac~ao e Algoritmos { LEIC
Apresentac~ao
Java { conceitos Basicos
Classes e Objectos
(do livro \Object-Oriented Analysis and Design - Grady Booch)
Rui Camacho
Apresentac~ao
Java { conceitos Basicos
Complementos de Programac~ao e Algoritmos { LEIC
Classes e Objectos
Analogia
C
denic~ao
criac~ao
automatica
a pedido
Java
typedef structf
char nome[80];
int idade;
g Pessoa;
class Pessoaf
int idade;
public Pessoa()f
idade = 0;
Pessoa pessoa1;
pessoa2 =
(Pessoa *) malloc( ... );
Rui Camacho
g
g
int inteiro;
pessoa =
new Pessoa();
Complementos de Programac~ao e Algoritmos { LEIC
Apresentac~ao
Java { conceitos Basicos
Abstracc~ao
Capacidade de encapsular e isolar informac~ao de design de
informac~ao de execuc~ao.
Vantagens:
I reutilizac~ao de software
I desenvolvimento mais rapido de software
Desvantagens:
I Eci^encia (alguns compiladores de linguagens imperativas fazem
\inline")
Rui Camacho
Apresentac~ao
Java { conceitos Basicos
Complementos de Programac~ao e Algoritmos { LEIC
Heranca
Princpio que permite que conhecimento de uma categoria mais
geral que a categoria de um indivduo seja acessvel a esse
indivduo.
Vantagens:
I evita replicac~ao de informac~ao (codigo e dados)
I desenvolvimento mais rapido de software
Desvantagens:
I Eci^encia
Rui Camacho
Complementos de Programac~ao e Algoritmos { LEIC
Apresentac~ao
Java { conceitos Basicos
Polimorsmo
Propriedade de utilizar o mesmo codigo para processar objectos
diferentes.
Vantagens:
I Tratamento uniforme de entidades de natureza diferente mas
relacionada (ex: biblioteca com livros, revistas, jornais ...)
I mais facil actualizac~ao/manutenc~ao de software
Rui Camacho
Complementos de Programac~ao e Algoritmos { LEIC
Download