Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

34
Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC

Transcript of Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Page 1: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Implementação Orientada a Objetos

Prof. Rodrigo Rocha – UMCProf. Pedro Toledo - UMC

Page 2: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Ambiente de programação orientada a objetos

• Conceitos de classe-objeto;• Atributos, métodos;• Herança;• Conceitos de public, private protected;• Encapsulamento;• Relação generalização-especialização;• Polimorfismo;• Troca de mensagens entre objetos.

Page 3: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Bibliografia

• Pádua, W, P. F. “Engenharia de Software”. Fundamentos, métodos e padrões. Editora: LCT, 2001.

• Booch, G; Rumbaugh, J. ; Jacobson, I.” UML -Guia do usuário”. Editira Campus. 1999.

• Cay S. ; Horstmann; Gary Cornell “ Core Java – Volume I – Fundamentals”. Sun Microsystems Press. 1999.

• Cay S. ; Horstmann; Gary Cornell “ Core Java – Volume I – Fundamentals”. Sun Microsystems Press. 1999.

• Deitel, H. M.; Deitel, P. J. “Java como programar”. Editora Bookman 2000.

Page 4: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Bibliografia (Continuação)

• Coad, P, Yourdon, E, Análise baseada em objetos. Editora Campus – 1992.

• Coad, P, Yourdon, E, Projeto baseada em objetos. Editora Campus 1993.

• Coad, P. ; Nicola, J. Object-oriented Programming. Editora Yourdon Press- 1993.

Page 5: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Ferramentas de trabalho

• Documentação: UML (Rose, outros);

• Implementação: Linguagem java;

• ...

Page 6: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Avaliação

• Três provas – M1, ND e Prova interdisciplinar 30% da nota;

• Datas:– M1 (12 ou 19 de abril de 2013)

– ND (07 de junho de 2013)

• Trabalhos – totalizando 20% da nota;

• Datas:– Oportunas

Page 7: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Paradigma

• Conceito: “Paradigma é um conjunto de regras que estabelecem fronteiras e descreve como resolver os problemas dentro destas fronteiras.”

• Os paradigmas influenciam nossa percepção; ajudam nos a organizar e a coordenar a maneira como olhamos para o mundo...

Page 8: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Orientação a Objetos

• Conceito: O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos;

• Linguagens que implementam OO.

– Smalltalk;– Pascal, (DELPHI);– C++, (BUIDER, VISUAL C++, BORLAND);

– Java.

Page 9: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

O que são Objetos?

• Coisas tangíveis – Livro;– Telefone.

• Eventos– Copa do mundo;– Simpósio.

• Transação– Um contrato;– Um pedido de compra.

Page 10: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Porque muitas empresas não adotam OO?

• Incerteza;

• falta de pessoas treinadas;

• Mas também OO não é a “bala de prata”;

• Sempre a última inovação tecnológica nos parece ser definitiva, vai resolver todos os nossos problemas !!!

Page 11: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

PROGRAMA CLASSE

PROCESSOS

DADOS

ATRIBUTOS

MÉTODOS

Foco no Sistema Foco na Classe

A mudança do enfoque

Page 12: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Objeto- outro conceito

• Objetos são pacotes de software compostos de dados e procedimentos;

• Os procedimentos atuam sobre os dados;

• Os dados determinam o estado do objeto.

Page 13: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Objetos Notação

Procedimentos

Dados

Page 14: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Exemplo de objeto

• Um carro: parar

trocar a marcha

acelerar

buzinarvirar

modelo

marca

ano

Page 15: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Exemplo de objeto

Emitir extrato

Solicitar saldo

depositar

sacar

cliente

número

saldo

limite

transferências

• Um conta bancária:

Page 16: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Exercício (10 minutos)

• Liste 3 métodos e 3 atributos para os seguintes objetos:

– Funcionário;– Aluno;– Pedido de um cliente;

Page 17: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Encapsulamento • Conceito: Encapsulamento é definido como uma

técnica para minimizar as interdependências entre “módulos'‘.

• Benefícios:

– Segurança: protege os atributos dos objetos de serem corrompidos por outros objetos;

– Independência: “escondendo'' seus atributos e métodos.

Page 18: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Troca de mensagens

Objetos interagem e comunicam se através de mensagens...

Emissor Receptor

Page 19: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Mensagens e métodos

As mensagens identificam os métodos a serem executados no objeto receptor.

– Para invocar um método de um objeto, deve-se enviar uma mensagem.

– Para enviar uma mensagem é necessário: • identificar o objeto que receberá a mensagem;• identificar o método que o objeto deve executar;• passar os argumentos requeridos pelo método.

Page 20: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Exemplo de troca de mensagens

PedidoProdutoCalcular

Total

Obter preço

preço

Page 21: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Métodos ou operações

Conceito: É a implementação de um serviço prestado pelo objeto para a comunidade de objetos ou a si mesmo.

Tipos de Métodos:• métodos de acesso;• métodos gerais.

Page 22: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Métodos - Exemplos

Objeto: Fita de vídeo.

• Métodos de acesso– situação da fita, nome do filme, preço de aluguel.

• Métodos gerais– cadastramento, empréstimo, exclusão.

Page 23: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Classe

Uma classe é a abstração de um conjunto de objetos com características semelhantes.

Uma classe define o comportamento de seus objetos através de métodos e os estados possíveis destes objetos através de atributos.

De forma geral uma classe descreve os serviços providos por seus objetos e quais informações eles podem armazenar.

Page 24: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Classe em Java

[ palavra-chave ] ‘class’ NomeDaClasse ‘{‘  // comportamentos e variáveis são declarados e descritos entre o ‘{‘ e o ‘}’‘}’

Sendo assim, para declarar uma classe, coloque a palavra class seguida de um identificador (NomeDaClasse) que será o nome da classe. O identificador pode ser qualquer palavra, exceto palavras reservada da linguagem.

Por exemplo, class Conta introduz a declaração de uma nova classe onde Conta é o nome da classe.

Dica: Por convenção, o nome de uma classe inicia sempre com uma letra maiúscula.

A palavra-chave é opcional e pode ser qualquer uma das seguintes: ‘public’, ‘abstract’, ‘public abstract’ ou  ‘final’.

Page 25: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Classe em Java (Continuação)

[ palavra-chave ] ‘class’ NomeDaClasse ‘{‘  // comportamentos e variáveis são declarados e descritos entre o ‘{‘ e o ‘}’‘}’

Utilize a palavra-chave ‘public’ para criar um nome de classe que possa ser utilizado em qualquer outra classe de qualquer programa ou pacote.

Colocando public na frente de uma declaração de classe, essa só poderá ser utilizada dentro do código de programa ou pacote atual. É importante salientar que pode se declarar mais de uma classe por arquivo, porém, somente uma delas poderá ser public (pública). Assim, o nome do arquivo do código-fonte deverá ser o mesmo da classe pública.

Page 26: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Classe em Java (Continuação)

Exemplo:public class ClasseExemplo{ }

No exemplo, o nome do arquivo onde ClasseExemplo foi definida deve se chamar ClasseExemplo. Declarar essa classe (pública) em outro arquivo não é permitido e irá gerar um erro de compilação.

Java considera diferentes letras maiúsculas e minúsculas. Assim, o nome da classe e o nome do arquivo devem ser exatamente iguais. Isso significa que o nome do arquivo deve ser escrito com o ‘C’ maiúsculo (de Classe) e ‘E’ maiúsculo (de Exemplo). As demais letras devem ser minúsculas.

Page 27: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Classe em Java (Continuação)

Exemplo:public class ClasseExemplo{ }

Utilize a palavra-chave ‘abstract’ para indicar que a classe corresponde a uma classe abstrata. Classes abstratas não podem ser utilizadas para a criação de objetos. Elas só servem como “classes-pai”, para que “classes-filhas” sejam criadas a partir delas.

Cada classe possui um “corpo” onde você declara os comportamentos (métodos) e variáveis de estado (atributos ou campos). O corpo começa com o caractere ‘ { ‘ e termina com o caractere ‘ } ’.

Page 28: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Criando Objetos

Um objeto é uma instância de uma classe. Para criar um objeto, utilize a seguinte sintaxe:‘new’ construtor

• O comando new também conhecido como operador de criação, cria um novo objeto, alocando memória para o objeto e inicializando essa memória para valores default. O comando new necessita de um operando: o construtor, que é o nome de um método especial que constrói o objeto da seguinte forma:

Pessoa umaPessoaQualquer = new Pessoa();

Page 29: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Criando Objetos

Uma vez construído, o objeto deve ser atribuído a uma variável, para que possa ser utilizado e referenciado no futuro. Preste atenção ao exemplo seguinte:

class Pessoa{ }

class ProgramaExemplo{public static void main(Strings parametros[]){

Pessoa umaPessoaQualquer; // declara uma variável que pode armazenar objetos do tipo Pessoa (definido na classe anterior)

umaPessoaQualquer = new Pessoa(); // cria uma nova pessoa e coloca-a na variável umaPessoaQualquer        }   }     

Nesse exemplo foi definida uma classe chamada Pessoa e após, no programa principal, foi criada uma variável chamada umaPessoaQualquer para receber um objeto do tipo pessoa (note que o tipo da variável é Pessoa, pois a variável é declarada de forma similar à declaração de variáveis do tipo int qualquer outro tipo natural da linguagem). Após, um novo objeto do tipo Pessoa é criado, através do comando new Pessoa(). Esse objeto é colocado na variável  umaPessoaQualquer através do comando de atribuição (sinal de igual).

Page 30: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Classe Aluno

Aluno

- media: double- nota1: double- nota2: double

+ calcularMedia() : void+ imprimir() : void

Page 31: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Código da classe Aluno public class Aluno {

private double media;private double nota1;private double nota2;//Construtorpublic Aluno() {

media = 0;}//Métodos de acessopublic double getMedia() {

return media;}public void setMedia(double media) {

this.media = media;}public double getNota1() {

return nota1;}public void setNota1(double nota1) {

this.nota1 = nota1;}public double getNota2() {

return nota2;}public void setNota2(double nota2) {

this.nota2 = nota2;}

public void calcularMedia() {media = (nota1 + 2 * nota2) / 3;

}public void imprimir() { System.out.println("Nota1 " + nota1); System.out.println("Nota2 " + nota2); System.out.println("Media " + media);}public static void main(String args[]) {

Aluno aluno;aluno = new Aluno();aluno.setNota1(new

Float(args[0]).floatValue());aluno.setNota2(new

Float(args[1]).floatValue());aluno.calcularMedia();aluno.imprimir();

} }

Page 32: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Java

publicpublic classclass Carro { Carro {

privateprivate String modelo; String modelo;

publicpublic Carro(String aModelo){ Carro(String aModelo){

modelo = aModelo;modelo = aModelo;

}}

publicpublic String getModelo() { String getModelo() {

returnreturn modelo; modelo;

}}

publicpublic voidvoid setModelo(String modelo) { setModelo(String modelo) {

thisthis.modelo = modelo;.modelo = modelo;

}}

publicpublic String toString(){ String toString(){

returnreturn "Modelo: " + modelo; "Modelo: " + modelo;

}}

publicpublic staticstatic voidvoid main(String arg[]){ main(String arg[]){

Carro carro = Carro carro = newnew Carro(arg[0]); Carro(arg[0]);

System.out.println(carro.toString());System.out.println(carro.toString());

}}

}}

Declara uma classe chamada Carro

Que tem um atributo modelo do tipo String

Possui um construtor parametrizado

Possui quatro métodos

Page 33: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Java

publicpublic classclass Carro { Carro {

privateprivate String modelo; String modelo;

publicpublic Carro(String aModelo){ Carro(String aModelo){

modelo = aModelo;modelo = aModelo;

}}

publicpublic String getModelo() { String getModelo() {

returnreturn modelo; modelo;

}}

publicpublic voidvoid setModelo(String modelo) { setModelo(String modelo) {

thisthis.modelo = modelo;.modelo = modelo;

}}

publicpublic String toString(){ String toString(){

returnreturn "Modelo: " + modelo; "Modelo: " + modelo;

}}

publicpublic staticstatic voidvoid main(String arg[]){ main(String arg[]){

Carro carro = Carro carro = newnew Carro(arg[0]); Carro(arg[0]);

System.out.println(carro.toString());System.out.println(carro.toString());

}}

}}

Todo programa Java é executado por um programa chamado "java.exe". A primeira coisa que ele faz é procurar na classe que você passou como parâmetro, um método chamado "main" , que seja público , e que ele não precise instanciar um objeto da classe para chamar - é por isso que ele tem de ser static. Outra coisa que o programa faz é passar os argumentos da linha de comando para essa classe, nessa variável "args". Ou seja:

java Carro Siena

ele chama o método "public static main" da classe Carro e preenche a variável args com o seguinte valor:

args[0] = “Siena"

Page 34: Implementação Orientada a Objetos Prof. Rodrigo Rocha – UMC Prof. Pedro Toledo - UMC.

Java

publicpublic classclass Carro { Carro {

privateprivate String modelo; String modelo;

publicpublic Carro(String aModelo){ Carro(String aModelo){

modelo = aModelo;modelo = aModelo;

}}

publicpublic String getModelo() { String getModelo() {

returnreturn modelo; modelo;

}}

publicpublic voidvoid setModelo(String modelo) { setModelo(String modelo) {

thisthis.modelo = modelo;.modelo = modelo;

}}

publicpublic String toString(){ String toString(){

returnreturn "Modelo: " + modelo; "Modelo: " + modelo;

}}

publicpublic staticstatic voidvoid main(String arg[]){ main(String arg[]){

Carro carro = Carro carro = newnew Carro(arg[0]); Carro(arg[0]);

System.out.println(carro.toString());System.out.println(carro.toString());

}}

}}

carro.toString() é uma instância da classe de cadeia de caracteres String. println é um método que imprime a String retornada pelo método toString()

println é um método da subclasse PrintStream denominada out na classe String. Este método escreve na tela a cadeia de caracteres que lhe é passada como parâmetro e faz uma quebra de linha (faz com que a próxima escrita na tela seja na próxima linha).