• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Java7
 

Java7

on

  • 5,668 views

 

Statistics

Views

Total Views
5,668
Views on SlideShare
5,655
Embed Views
13

Actions

Likes
0
Downloads
252
Comments
0

1 Embed 13

http://www.slideshare.net 13

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Java7 Java7 Presentation Transcript

    • Linguagens e Técnicas de Programação - JAVA José Marcos Barbosa da Silveira [email_address]
    • Definição sobre a Orientação a Objetos
      • Objetivos deste capítulo
      • Fornecer definições básicas sobre a orientação a objetos;
      • Demostrar as diferentes partes que compõem uma classe;
      • Definir a instanciação de objetos por meio de classes;
      • Demostrar como é realizado o processo de troca de dados entre objetos;
      • Elucidar o compartilhamento de métodos entre diferentes classes;
      • Demostrar as funções de construtores e destrutores;
      • Enumerar as vantagens da utilização das técnicas de encapsulamento, herança e polimorfismo.
    • Definição sobre a Orientação a Objetos
      • A teoria sobre a orientação a objetos (OO) é extremamente importante, uma vez que toda a linguagem Java se baseia nesse princípio. Esses conceitos são meio abstratos se não forem bem tratados, podem gerar muitas dúvidas. Por esse motivo serão apresentados alguns exemplos práticos de utilização para que o aluno tenha uma melhor compreensão sobre os pontos abordados.
      • No cotidiano vivemos cercados por objetos de diversos tipos e formas. O contato com esses objetos nos leva a identificar suas características físicas, sua forma, etc. Ao visualizarmos um objeto qualquer, como um veículo, por exemplo, reconhecemos sua forma, seu modelo, sua cor, enfim suas diversas características. Outros veículos possuirão diferentes características, o que nos leva a entender que mesmos objetos de mesmo tipo possuem características diferentes. Associado com as características do objeto, existe outro fator: os procedimento que podem ser realizados ou analisados com ele. Voltando ao exemplo do veículo, ele pode estar parado ou em movimento, existe um procedimento para aumentar (acelerar) e um para diminuir (frear) sua velocidade. A programação orientada a objetos tenta simular esses aspectos, trazendo para o computador a realidade do dia-a-dia.
    • Abstração
      • Visão do mundo real:
        • Estamos acostumados a sempre abstrair de objetos aquilo
        • que nos interessa.
      • cor
      • cilindrada
      • velocidadeMax
      • acelerar()
      • placa
      • cor
      • númeroChassi
      • aplicarMulta()
    • Classes
      • Visão do mundo real:
        • moldes para criação de objetos;
        • especificam propriedades e ações em comum a todos seus objetos.
      Classe Automóvel
    • Definições envolvendo classes
      • Estrutura:
        • Qualificador class produto{
        • //atributos da classe
        • //métodos da classe
        • }
      • O qualificador da classe indica como a classe pode ser usada por outras classes. Existem dois tipos de qualificador: public e package.
      • public - indica que o conteúdo público da classe pode ser usado livremente por outras classes do mesmo pacote ou de outro pacote.
      • package - indica que o conteúdo público da classe pode ser usado apenas por classes do mesmo pacote, isto é, por classes localizadas no mesmo diretório.
      • Um arquivo java pode conter diversas classes , mas apenas uma delas pode ser definida como pública . Ao ser criada uma classe, o arquivo java deve possuir o mesmo nome da classe pública .
      • As classes são modelos a partir das quais podem ser criados objetos. Imagine um classe como sendo um projeto de um veículo criado por uma empresa montadora.
    • Definição de Pacotes
      • Um pacote (package) em java é um diretório em que está armazenada uma ou mais classes, isto é, um conjunto de classes. Geralmente as classes de mesma afinidade, ou mesmo propósito, são armazenadas num mesmo local. Do ponto de vista da programação, os package representam as bibliotecas (libraries) presentes em outras linguagens. Para utilizar classes de um pacote, é usada a diretiva import .
      • Alguns exemplos:
      • · java.lang contêm as classes que formam o núcleo da linguagem , tais como String, Math, Integer e Thread.
      • · java.awt contêm as classes que produzem o Abstract Window ToolKit (AWT). Este pacote é utilizado na construção e gerenciamento de interfaces gráficas da aplicação.
      • · java.applet contêm as classes específicas para a utilização de applets.
      • · java.net contêm as classes para a utilização de serviços de rede.
      • · Java.util contêm classes “utilitárias” para tarefas como geração aleatória de números, definição de propriedades de sistemas.
    • Partes que compõem uma classe
      • Um classe é composta basicamente por dois itens: variáveis de instância ou atributos e a implementação de métodos.
      • A diferença básica entre uma variável de instância e uma variável comum é o fato de que as variáveis de instância são declaradas fora de um método , isto é, logo no topo da declaração do nome da classe. São como variáveis globais.
      Nome Atributos Métodos
    • Partes que compõem uma classe Um protótipo que define os atributos e os métodos comuns a todos objetos de um determinado tipo e da própria classe, com a finalidade de servir como molde para a criação de objetos. Classes - Visão em POO: Classe Objetos Joaquim José Maria Empregado
    • Objetos Um conjunto distinto de atributos e métodos que representam entidades do mundo real, implementados por software e gerados (instanciados) através de classes. Visão em POO: Atributos Métodos Métodos Métodos Métodos
    • Partes que compõem uma classe
      • Exemplo :
      • public class Produto {
      • int codigo;
      • String nome;
      • double preco;
      • //métodos
      • }
    • Instanciação de uma classe
      • A criação de um objeto a partir de uma classe é chamada de processo de instanciação. A instanciação na realidade corresponde à alocação da memória para armazenar informações de um objeto , semelhante ao que ocorre na declaração de uma variável qualquer. Para realizar a instanciação de um objeto qualquer, é usado o operador new .
      • Enquanto a classe representa um modelo abstrato que serve apenas como base, os objetos representam modelos concretos.
      • Exemplo:
      • class UsaProduto{
      • public static void main(String args[]){
      • Produto a,b;
      • a=new Produto();
      • b=new Produto();
      • System.out.println(a.codigo+" " +a.nome+" "+a.preco);
      • a.codigo=10;
      • a.nome="Parafuso";
      • a.preco=0.50;
      • System.out.println(a.codigo+" " +a.nome+" "+a.preco);
      • b.codigo=20;
      • b.nome="Prego";
      • b.preco=0.10;
      • System.out.println(b.codigo+" " +b.nome+" "+b.preco);
      • }}
    • Criando objetos
      • Alocação e layout
        • No corpo do método, a declaração
        • Produto a aloca espaço somente para a referência:
        • O comando new Produto() aloca e inicializa o espaço:
        • int codigo
        • String nome
        • double preco
      ???????? a 0 ? 0.0
    • Criando objetos - cont
      • Alocação e layout
        • Finalmente, atribuindo a variável referência o endereço do objeto alocado.
        • a = new Produto();
        • a
        • int codigo
        • String nome
        • double preco
      ? ? 0 0x01abdfe
    • Compartilhamento de variáveis entre os objetos
      • Conforme demostrado anteriormente, cada objeto criado trata as variáveis de instância de forma exclusiva, isto é, cada objeto possui uma variável a si próprio. Entretanto, em muitos casos torna-se necessário compartilhar uma variável entre todos os objetos. Essa característica faz com que o conteúdo da variável seja controlado pela própria classe e não pelos objetos. Para que essa funcionalidade seja possível basta declarar a variável como sendo do tipo static .
      • Exemplo:
      • public class Produto {
      • static int codigo;
      • String nome;
      • double preco;
      • //métodos
      • }
    • Compartilhamento de variáveis entre os objetos
      • Exmplo:
      • class UsaProduto{
      • public static void main(String args[]){
      • Produto a,b;
      • a=new Produto();
      • b=new Produto();
      • System.out.println(a.codigo+" " +a.nome+" "+a.preco);
      • a.codigo=10;
      • a.nome="Parafuso";
      • a.preco=0.50;
      • b.codigo=20;
      • b.nome="Prego";
      • b.preco=0.10;
      • System.out.println(a.codigo+" " +a.nome+" "+a.preco);
      • System.out.println(b.codigo+" " +b.nome+" "+b.preco);
      • }
      • }
    • Declaração de métodos de uma classe
      • Enquanto os atributos armazenam os dados associados aos objetos, os métodos podem realizar operações com os objetos. Por meio dos métodos é possível imitar o comportamento de um objeto no mundo real.
      • public class Produto {
      • static int codigo;
      • String nome;
      • double preco;
      • public void atualizaPreco(double porc){
      • preco=preco+preco*porc/100;
      • }
      • }
    • Declaração de métodos de uma classe
      • Exemplo:
      • class UsaProduto{
      • public static void main(String args[]){
      • Produto a,b;
      • a=new Produto();
      • b=new Produto();
      • System.out.println(a.codigo+" " +a.nome+" "+a.preco);
      • a.codigo=10;
      • a.nome="Parafuso";
      • a.preco=0.50;
      • b.codigo=20;
      • b.nome="Prego";
      • b.preco=0.10;
      • System.out.println(a.codigo+" " +a.nome+" "+a.preco);
      • System.out.println(b.codigo+" " +b.nome+" "+b.preco);
      • a.atualizaPreco(10);
      • b.atualizaPreco(20);
      • System.out.println(a.codigo+" " +a.nome+" "+a.preco);
      • System.out.println(b.codigo+" " +b.nome+" "+b.preco);
      • }
      • }
    • Encapsulamento
      • Conforme demostrado até aqui, as variáveis e métodos declarados na classe são visíveis a todos os objetos criados. Apesar de ser uma característica desejável na maioria das vezes, algumas aplicações necessitam ocultar certos métodos ou variáveis. Sendo assim, o termo encapsulamento, também conhecido por acessibilidade, pois define o que está acessível na classe, é a forma como os elementos da classe podem ser vistos e utilizados por outras classes.
      • Para determinar o nível de acesso dos elementos de uma classe, são usados os qualificadores de acesso public , private e protected . Por meio das restrições de acesso é possível assegurar que certas variáveis de instância tenham valores restritos que só podem ser acessados da própria classe e não por intermédio de classes externas, mantendo uma certa segurança com relação à integridade do valor armazenado.
      • dica: sempre defina os atributos de uma classe como privados, a não ser que tenha uma boa justificativa para não serem.
    • Encapsulamento - modificadores de visibilidade public private protected <default> Estes atributos e métodos são sempre acessíveis em todos os métodos de todas as classes. Este é o nível menos rígido de encapsulamento, que equivale a não encapsular. Estes atributos e métodos são acessíveis somente nos métodos (todos) da própria classe. Este é o nível mais rígido de encapsulamento. Estes atributos e métodos são acessíveis no pacote, nos métodos da própria classe e suas subclasses, o que será visto em Herança. Visível no pacote e na classe.
    • Encapsulamento (cont.)
      • Visão do mundo real:
        • sempre escondemos do mundo externo alguns atributos pessoais;
        • definimos, através de ações se iremos ou não externar estes atributos.
      Salário getSalário Salário*0.3 O Cunhado Salário/2 O Leão do Imposto de Renda salário/10 A namoradinha
    • Encapsulamento (cont.) class CorpoCeleste { public long id; public String nome; ..... } class CorpoCeleste { private long id; private String nome; ..... public long getId() { return id; } public String getNome() { return nome; } ..... } Garante acesso externo somente no modo “read-only”
    • Exemplo
      • public class Produto {
      • static int codigo;
      • String nome;
      • double preco;
      • public void setCodigo(int cod){
      • codigo=cod;
      • }
      • public void setNome(String nm){
      • nome=nm;
      • }
      • public void setPreco(double pc){
      • preco=pc;
      • }
      • public int getCodigo(){
      • return codigo;
      • }
      • public String getNome(){
      • return nome;
      • }
      • public double getPreco(){
      • return preco;
      • }
      • }
    • Construtores
      • Objetos são criados através da declaração new , seguida de um método construtor. Exemplo:
      • Produto a = new Produto();
      • Uma classe pode ter construtores especializados ou somente o construtor default (gerado pelo compilador);
      • Um construtor recebe sempre o mesmo nome da sua classe;
      • Um construtor pode receber argumentos porém não tem retorno;
      • O método construtor gera uma instância do objeto em memória e o seu código é executado imediatamente após a criação do objeto provendo-lhe um estado inicial;
    • Construtor (cont.)
      • O método construtor é responsável por alocar espaço na memória para a manipulação do novo objeto que está sendo criado e pode conter as seguintes atribuições: abrir arquivos, inicializar periféricos, inicializar variáveis de instância ou outros procedimentos. O método construtor pode conter também a chamada para outros métodos.
      • Exemplo :
      • class Cliente{
      • int codigo;
      • String nome;
      • String cidade;
      • Cliente(){
      • cidade=&quot;Indaituba&quot;;
      • }
      • Cliente(String nm){
      • nome=nm;
      • cidade=&quot;Indaituba&quot;;
      • }}
    • Construtor (cont.)
      • public class UsaCliente{
      • public static void main(String args[]){
      • Cliente c1=new Cliente(); //Chama o método construtor
      • Cliente c2=new Cliente(&quot;José&quot;);
      • System.out.println(c1.codigo);
      • System.out.println(c1.nome);
      • System.out.println(c1.cidade);
      • System.out.println(c2.codigo);
      • System.out.println(c2.nome);
      • System.out.println(c2.cidade);
      • }
      • }
    • Herança
      • Herança significa ser capaz incorporar os dados e métodos de uma classe previamente definida. Assim como a herança de todas as operações e dados, você pode especializar métodos da classe ancestral e especificar novos operações e dados, para refinar, especializar, substituir ou estender a funcionalidade da classe progenitora.
    • Herança Meios de transporte Terrestres Aquáticos Aéreos
    • Herança - t erminologia
      • estender = criar uma nova classe que herda todo o conteúdo da classe existente .
      • superclasse = uma classe progenitora ou “base”.
      • subclasse = uma classe filha que herda, ou estende, uma superclasse .
    • Herança - exemplo class Veiculo{ String nome; float velocidade; public void acelerar(){ if(velocidade<=10) velocidade++; } public void frea(){ if(velocidade>0) velocidade--; } } class Veiculo2 extends Veiculo{ boolean ligado; public void liga(){ ligado=true; } public void desliga(){ ligado=false; } } Obs : Herança constitui uma importante técnica para a orientação a objetos, possibilitando que código já criado em uma classe seja reaproveitado e especializado em outra.
    • Polimorfismo
      • ocorre quando uma classe possui um método com o mesmo nome e assinatura (número, tipo e ordem de parâmetros) de um método na sua superclasse;
      • toda vez que isto ocorrer, a máquina virtual irá executar o método da classe mais especializada (a subclasse) e não o método da superclasse ( sobreposição ). Note que esta decisão ocorre em tempo de execução ;
      • polimorfismo ocorre também quando existem dois métodos com mesmo nome, na mesma classe e com assinaturas diferentes ( sobrecarga ). O método será escolhido de acordo com o número de parâmetros, tipo ou valor de retorno esperado. Note que esta decisão ocorre em tempo de compilação .
    • Polimorfismo (cont.)
      • Membros com mesmos identificadores substituem membros herdados.
      • Os membros definidos na superclasse podem ser acessados na subclasse através do qualificador super.
      • Métodos declarados como final não podem ser redefinidos.
      • Métodos abstratos devem ser redefinidos ou declarados como abstratos.
    • Polimorfismo -Sobreposição public class Super { ... public void metodo1() { a = b * c; } } public class Sub extends Super { ... public void metodo1() { x = y + z; } } Substituir a implementação de um método herdado por uma implementação própria da subclasse
    • Polimorfismo - Sobreposição class Fruta { int gramas; int calorias_por_grama; Fruta() { gramas=55; calorias_por_grama=0; } Fruta(int g, int c) { gramas =g; calorias_por_grama =c; } void descascar () { System.out.println(“Aqui eu descasco frutas”); } }
    • Polimorfismo - Sobreposição class Citros extends Fruta { private int acidoCitrico; public Citros() { super(); this.acidoCitrico=1000; } public Citros(int g, int c, int a) { super(g,c); this.setAcidoCitrico(a); }
    • Polimorfismo - Sobreposição int getAcidoCitrico() { return acidoCitrico; } void setAcidoCitrico(int acido) { this.acidoCitrico=acido; } void descascar () { System.out.println( “ Aqui eu descasco so citricos”); } }
    • Polimorfismo - Sobrecarga public class Fruta { int gramas; int calorias_por_grama; public Fruta() { gramas=55; calorias_por_grama=0; } public Fruta(int g, int c) { this.gramas =g; this.calorias_por_grama =c; } }
    • Polimorfismo - Sobrecarga public class Feira { public static void main(String args[]) { Fruta melancia = new Fruta(4000, 5); Fruta manga = new Fruta (); manga.gramas=100; manga.calorias_por_grama=100; System.out.println(“manga “+ manga.gramas + “ gs “ + manga.calorias_por_grama); } }
    • Exercícios
      • 1) Crie uma classe para simular o funcionamento de um motor. A classe motor deve possuir os atributos: velocidade em RPM, fabricante, voltagem, status do motor (ligado/desligado) e os métodos liga motor, desliga motor e verifica velocidade do motor.
      • 2) Crie uma classe que utilize três objetos da classe motor e imprima na tela os valores dos atributos.
      • 3) Crie uma classe que estenda as características do exercício 1, acrescentando dois métodos: um para aumentar a velocidade e outro para reduzir a velocidade. A velocidade não pode passar de 5000 RMP e não pode ser menor que 0.
      • 4) Crie uma classe que implemente a classe do exercício 3 e faça a velocidade do motor aumentar de 50 em 50 até 5000. Ao atingir a velocidade máxima, o motor começa a reduzir a velocidade de 50 em 50 até chegar a zero.
    • Exercícios (cont.)
      • 5) Faça um programa em JAVA usando classe, para calcular a área de um retângulo.
          • A classe deve ter dois atributos privados (base e altura) e dois métodos públicos: um para inicializar os atributos e outro para calcular a área e realizar a impressão da área.
      • 6) Uma classe de nome Triangulo, possui os atributos privados: base, altura e área do tipo inteiro. E os métodos:
        • public void setBase (int b);
        • public void setAltura (int a);
        • public int getArea();
      • Sabe-se que o cálculo da área do triângulo é: area = base * altura / 2.
      • Logo, implemente em JAVA um programa que mostra a área de um triângulo de base igual 20 e altura igual a 12;
      • 7) Defina uma classe de nome Aluno com dados privados para armazenar o nome do aluno, a série e o grau. Inclua dois métodos públicos: uma para solicitar os dados para o usuário e outro para imprimir os dados.
    • Exercícios (cont.)
      • 8) Crie duas classes que definam os seguintes atributos e métodos para objetos do tipo:
      Empregado nome: String salario: float getSalario() : float setSalario(salario: float): void Gerente comissao: float setComissao(comissao: float) : void
      • Ao final crie um objeto da classe Empregado e um objeto da classe Gerente, atribuindo valores para seus salários e comissão para o gerente. Ao final execute os métodos getSalario() de ambos objetos. Lembrar que o salário do gerente é composto do salário + comissão.
    • Bibliografia
        • FURGERI, Sérgio. Java 2: Ensino didático: Desenvolvendo e Implementando Aplicações –
        • São Paulo: Érica, 372p. 2002.
        • TAMASSIA, R.; GOODRICH, M.T. Estrutura de Dados e Algoritmos em Java. Bookman, 2002.
        • DEITEL,H.M.; DEITEL, P.J. Java: Como Programar , Bookman, 2002.