Prévia do material em texto
AULA 01
PROGRAMAÇÃO ORIENTADA A OBJETOS
Introdução à orientação a objetos
Karina Valdivia Delgado
Paradigmas de Programação
Programação Estruturada.
Programação Funcional.
Programação Orientada a Objetos.
Paradigmas de Programação
Programação Estruturada:
Procedimentos são implementados em blocos.
A comunicação entre os blocos se dá pela passagem de dados.
Paradigmas de Programação
Programação Estruturada:
Desenhar um conjunto de funções que solucionem as tarefas requeridas.
Caso as funções sejam muito grandes, quebrá-las em funções menores.
Informações são armazenadas em variáveis globais.
Linguagens: C, Pascal, Fortran.
Paradigmas de Programação
Programação Funcional:
Não existe declaração de variáveis, somente funções.
Linguagens: LISP, Haskell.
Paradigmas de Programação
Programação Orientada a Objetos (POO):
Dados e funções relacionados são encapsulados em um mesmo elemento denominado objeto.
A comunicação entre objetos é feita pelo envio e recebimento de mensagens.
Paradigmas de Programação
Programação Orientada a Objetos (POO):
Desenhar um conjunto de classes que descrevem objetos semelhantes e que atendam as tarefas requeridas.
Linguagens:
Smalltalk.
Java, C++, C#, Delphi, Ruby, Python.
Paradigmas de Programação
Vantagens da POO:
Maior índice de reaproveitamento de código.
Maior facilidade de manutenção.
Maior confiabilidade no código.
Maior facilidade de gerenciamento do código.
Maior robustez.
Paradigmas de Programação
Exemplo: Escreva um programa para registrar as 4 notas de cada um de 10 alunos em uma disciplina e calcular a média de cada um.
Paradigmas de Programação
int [10][4] notas;
int [10] medias;
void leNotas(){ ... }
void calculaMedia(){ ... }
void imprimeMedia(){ ... }
void main(){ ... }
Programação Estruturada (C):
Paradigmas de Programação
Programação Orientada a Objetos:
Aluno
String nome;
int [4] nota;
double media;
void leInformacaoAluno();
void calculaMedia();
void imprimeDados();
RegistroNotas
0..10
int main(String []args)
11
Objeto
É uma entidade que formaliza o modo pelo qual compreendemos algo no domínio do problema.
É a entidade o mais próxima possível das entidades do mundo real.
Os objetos são os substantivos do domínio do problema.
Objeto
O objeto tem:
Estado
Comportamento
Identidade
Objeto
O objeto tem:
Estado: é definido pelas propriedades que ele possui e os valores que lhe são atribuídos.
Comportamento: definido pela forma como ele reage, em termos de mudança de seu estado e o relacionamento com os outros objetos.
Identidade: propriedade pela qual ele se distingue dos outros.
14
Classe
Representação de qualquer coisa que seja necessária modelar para solucionar o problema.
Pode ser visto como uma caixa-preta, que expõe somente alguns dados e algumas funções.
Classe
Descreve um conjunto de objetos semelhantes, isto é, atributos e métodos que resumem as características comuns de vários objetos.
A classe é uma abstração que define o que os objetos são e como se comportam.
Ex: Aluno, Professor, Cliente, Vendedor, Livro.
Classe x Objeto
A classe define a estrutura, o objeto é a instância da classe, a qual lhe são atribuídos valores.
O objeto é uma entidade concreta com tempo e espaço de existência, enquanto classe é apenas uma abstração.
Classe x Objeto
18
Classe
Membros da Classe
Atributos (propriedades)
Métodos (funções/serviços)
Classe
Atributos (Propriedades)
São os dados que o objeto armazenará.
Ao criar um objeto, se criará também o espaço de memória para todos os atributos dele.
O estado do objeto é representado pelos valores de seus atributos.
Classe
São as operações que podem ser executadas pelos objetos.
Definem o comportamento do objeto.
São equivalentes às funções utilizadas na programação estruturada. A diferença principal é que tem acesso direto a todos os atributos do objeto.
Métodos (Funções/Serviços)
Classe
Notação Gráfica
Aluno
String nome;
int [4] nota;
double media;
void leInformacaoAluno();
void calculaMedia();
void imprimeDados();
Permite visualizar uma abstração.
Permite focar a atenção nas partes mais importantes de uma abstração.
Independe da linguagem de programação.
22
Classe e Objeto
Exemplo
Aluno
String nome;
int [4] nota;
double media;
void leInformacaoAluno();
void calculaMedia();
void imprimeDados();
Classe: Aluno
Objeto:
Aluno a1=new Aluno();
Atributos: nome, nota, média.
Métodos: leInformacaoAluno, ...
Programação Orientada a Objetos
Princípios básicos
Abstração
Encapsulamento
Composição/Agregação
Herança
Polimorfismo
Modularidade
Mensagens
Princípios Básicos
Abstração
Consiste em identificar artefatos de sotware na modelagem de um domínio, ignorando aspectos não relevantes e concentrando-se nos assuntos principais do problema.
Classes são abstrações de conceitos.
Princípios Básicos
Encapsulamento
Esconder os detalhes da implementação de um objeto.
A ideia é que o sistema não deve depender de sua implementação interna e sim de sua interface.
Princípios Básicos
Encapsulamento
Capacidade de um objeto possuir uma parte privada, acessível somente através dos métodos definidos na sua interface pública.
Ex: não queremos que outro objeto possa alterar a média do aluno manualmente.
Princípios Básicos
Encapsulamento
28
Princípios Básicos
Relacionamentos:
Os objetos se relacionam entre si:
Associação: qualquer verbo pode ser utilizado
Composição/Agregação: Parte-de
Herança: É-um
Princípios Básicos
Associação::
30
Princípios Básicos
Composição:
Roda
Bicicleta
2
Cliente
Conta
1..n
A roda só existe enquanto a bicicleta existe
Agregação:
O cliente existe independente da existência da conta
Princípios Básicos
Herança (generalização/especialização): É-um
Permite a hierarquização das classes.
Uma classe mais especializada (sub-classe) herda métodos e atributos de uma classe mais geral (super-classe).
Mamífero
Cachorro
Princípios Básicos
Herança (generalização/especialização): É-um
Uma sub-classe pode sobreescrever o comportamento de uma super-classe.
33
Princípios Básicos
Herança múltipla:
Algumas linguagens (C++) aceitam este conceito, permitindo que uma classe tenha mais de uma super-classe. Ex: Golfinho herda de mamífero e de animal marinho.
Java não permite. Porém, uma classe pode implementar diversos contratos (interfaces)..
Princípios Básicos
Possibilita que métodos diferentes, que estão em diferentes níveis da hierarquia de classes tenham o mesmo nome e apresentem diferentes comportamentos.
As sub-classes podem redefinir os comportamentos herdados de maneira diferente.
Polimorfismo:
Princípios Básicos
Ex:
O mamífero se movimenta.
O cachorro se movimenta em terra.
O golfinho se movimenta na água.
Polimorfismo:
Princípios Básicos
Capacidade de criar um conjunto de módulos, cada um contendo classes com independência de funcionamento.
Modularidade:
Princípios Básicos
Objetos se comunicam por meio do envio e recebimento de mensagens.
Mensagens:
AULA 01
PROGRAMAÇÃO ORIENTADA A OBJETOS
Introdução à orientação a objetos
Karina Valdivia Delgado
image2.png
image3.jpeg
image4.png