Upload
internet
View
109
Download
0
Embed Size (px)
Citation preview
Implementação Orientada a Objetos
Prof. Rodrigo Rocha - 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.
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.
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.
Ferramentas de trabalho
• Documentação: UML (Rose, outros);
• Implementação: Linguagem java;
• ...
Avaliação
• Três provas – M1, M2 e Prova interdisciplinar 80% da nota;
• Trabalhos – totalizando + ou - 20% da nota;
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...
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.
O que são Objetos?
• Coisas tangíveis – Livro;– Telefone.
• Eventos– Copa do mundo;– Simpósio.
• Transação– Um contrato;– Um pedido de compra.
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 !!!
PROGRAMA CLASSE
PROCESSOS
DADOS
ATRIBUTOS
MÉTODOS
Foco no Sistema Foco na Classe
A mudança do enfoque
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.
Objetos Notação
Procedimentos
Dados
Exemplo de objeto
• Um carro: parar
trocar a marcha
acelerar
buzinarvirar
modelo
marca
ano
Exemplo de objeto
Emitir extrato
Solicitar saldo
depositar
sacar
cliente
número
saldo
limite
transferências
• Um conta bancária:
Exercício (10 minutos)
• Liste 3 métodos e 3 atributos para os seguintes objetos:
– Funcionário;– Aluno;– Pedido de um cliente;
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.
Troca de mensagens
Objetos interagem e comunicam se através de mensagens...
Emissor Receptor
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.
Exemplo de troca de mensagens
PedidoProdutoCalcular
Total
Obter preço
preço
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.
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.
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.
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’.
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.
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.
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 ‘ } ’.
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();
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).
Classe Aluno
Aluno
- media: double- nota1: double- nota2: double
+ calcularMedia() : void+ imprimir() : void
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();
} }
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
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"
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).