SlideShare uma empresa Scribd logo
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.

Mais conteúdo relacionado

PPTX
Curso Java Básico - Aula02
PPTX
Curso Java Básico - Aula 03
Curso Java Básico - Aula02
Curso Java Básico - Aula 03

Mais procurados (20)

PDF
Revisão Sobre Programação Orientada a Objetos com Java
PDF
Programação orientada a objetos – III
PPTX
Curso Java Básico - Aula 04
PDF
Curso de OO com C# - Parte 01 - Orientação a objetos
PDF
Curso de Java (Parte 4)
PPTX
PDF
Conceitos Básicos de OO e Java
PDF
Java orientação a objetos (variaveis de instancia e metodos)
PDF
Curso java 03 - métodos e parâmetros
PPTX
Curso Java Básico - Aula 01
PPTX
Java: Classes Abstratas, Anônimas, Interface
PDF
Exercícios de programação orientado a objeto
PDF
Programação orientada a objetos - IV
PDF
Curso de Java (Parte 2)
PDF
Programação orientada a objetos – II
PDF
Orientação a Objetos em Python
PPT
Java Básico :: Classe Vector
PDF
Apostila de Introdução a POO com C#
Revisão Sobre Programação Orientada a Objetos com Java
Programação orientada a objetos – III
Curso Java Básico - Aula 04
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de Java (Parte 4)
Conceitos Básicos de OO e Java
Java orientação a objetos (variaveis de instancia e metodos)
Curso java 03 - métodos e parâmetros
Curso Java Básico - Aula 01
Java: Classes Abstratas, Anônimas, Interface
Exercícios de programação orientado a objeto
Programação orientada a objetos - IV
Curso de Java (Parte 2)
Programação orientada a objetos – II
Orientação a Objetos em Python
Java Básico :: Classe Vector
Apostila de Introdução a POO com C#
Anúncio

Destaque (8)

PDF
[ ref ] Convergência - Mobilidade
PDF
[ ref ] Normalizing a Data Model in SQL Server
PPS
Aquarelas Envelhecidas
PDF
Curso java 05 - herança, classes e métodos abstratos
PDF
Master Place - Convenção Bloco D
PDF
[ reference ] Processos - PMBOK
PPTX
Programação orientada a objetos
PDF
A Evolucao dos Processos de Desenvolvimento de Software
[ ref ] Convergência - Mobilidade
[ ref ] Normalizing a Data Model in SQL Server
Aquarelas Envelhecidas
Curso java 05 - herança, classes e métodos abstratos
Master Place - Convenção Bloco D
[ reference ] Processos - PMBOK
Programação orientada a objetos
A Evolucao dos Processos de Desenvolvimento de Software
Anúncio

Semelhante a Java7 (20)

PPTX
JAVA - Orientação a Objetos
PDF
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
PPT
Introdução a programação Orientada a Objeto
PPT
Curso Java Basico
PPTX
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
PDF
Aula 1 - Introdução a POO
PDF
Aula 02 - Principios da Orientação a Objetos (POO)
PPT
Mini aula-java
PDF
Java orientação a objetos (introdução)
PPT
Aula 1 - Linguagem III
PPTX
Orientação à objetos conceituação
PPSX
Java & orientação a objetos
PDF
Aula 1 5
PPTX
Módulo 9 - Introdução à Programação Orientada a Objectos
PPTX
Curso de Java 4 - (Orientação a Objetos).pptx
PPT
Poo slides01
PPT
Apresentação curso de Extensão em Java (UERJ-IME) v1
PDF
Programação OO - Java
JAVA - Orientação a Objetos
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
Introdução a programação Orientada a Objeto
Curso Java Basico
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
Aula 1 - Introdução a POO
Aula 02 - Principios da Orientação a Objetos (POO)
Mini aula-java
Java orientação a objetos (introdução)
Aula 1 - Linguagem III
Orientação à objetos conceituação
Java & orientação a objetos
Aula 1 5
Módulo 9 - Introdução à Programação Orientada a Objectos
Curso de Java 4 - (Orientação a Objetos).pptx
Poo slides01
Apresentação curso de Extensão em Java (UERJ-IME) v1
Programação OO - Java

Mais de Robson Silva Espig (20)

PDF
Como implementar uma plataforma de ILM com eficiência, reduzindo custos
PDF
Gestao Projetos - Aula 02
PDF
Gestao Projetos - Aula 01
PDF
PDF
PDF
PDF
PDF
Caso de Desenvolvimento
PDF
PDF
Artigo Caso de Uso
PDF
Analise de Requisitos de Software
PDF
Desenvolvimento Iterativo e Incremental
PDF
Implantacao de Software
PDF
Manutencao de Software
PDF
Orientacao a Objetos
PDF
Programacao Extrema
PDF
Modelo em Espiral
Como implementar uma plataforma de ILM com eficiência, reduzindo custos
Gestao Projetos - Aula 02
Gestao Projetos - Aula 01
Caso de Desenvolvimento
Artigo Caso de Uso
Analise de Requisitos de Software
Desenvolvimento Iterativo e Incremental
Implantacao de Software
Manutencao de Software
Orientacao a Objetos
Programacao Extrema
Modelo em Espiral

Último (20)

PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PPTX
Aula sobre desenvolvimento de aplicativos
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Aula sobre banco de dados com firebase db
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Émile Durkheim slide elaborado muito bom
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Curso de Java 17 - (JEE (Sessões e Cookies)).pptx
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Aula sobre desenvolvimento de aplicativos
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Curso de Java 9 - (Threads) Multitarefas.pptx
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Apple Pippin Uma breve introdução. - David Glotz
Aula sobre banco de dados com firebase db
COBITxITIL-Entenda as diferença em uso governança TI
Émile Durkheim slide elaborado muito bom
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx

Java7

  • 1. Linguagens e Técnicas de Programação - JAVA José Marcos Barbosa da Silveira [email_address]
  • 2. 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.
  • 3. 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.
  • 4. 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()
  • 5. 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
  • 6. 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.
  • 7. 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.
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. Partes que compõem uma classe Exemplo : public class Produto { int codigo; String nome; double preco; //métodos }
  • 12. 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+&quot; &quot; +a.nome+&quot; &quot;+a.preco); a.codigo=10; a.nome=&quot;Parafuso&quot;; a.preco=0.50; System.out.println(a.codigo+&quot; &quot; +a.nome+&quot; &quot;+a.preco); b.codigo=20; b.nome=&quot;Prego&quot;; b.preco=0.10; System.out.println(b.codigo+&quot; &quot; +b.nome+&quot; &quot;+b.preco); }}
  • 13. 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
  • 14. 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
  • 15. 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 }
  • 16. 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+&quot; &quot; +a.nome+&quot; &quot;+a.preco); a.codigo=10; a.nome=&quot;Parafuso&quot;; a.preco=0.50; b.codigo=20; b.nome=&quot;Prego&quot;; b.preco=0.10; System.out.println(a.codigo+&quot; &quot; +a.nome+&quot; &quot;+a.preco); System.out.println(b.codigo+&quot; &quot; +b.nome+&quot; &quot;+b.preco); } }
  • 17. 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; } }
  • 18. 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+&quot; &quot; +a.nome+&quot; &quot;+a.preco); a.codigo=10; a.nome=&quot;Parafuso&quot;; a.preco=0.50; b.codigo=20; b.nome=&quot;Prego&quot;; b.preco=0.10; System.out.println(a.codigo+&quot; &quot; +a.nome+&quot; &quot;+a.preco); System.out.println(b.codigo+&quot; &quot; +b.nome+&quot; &quot;+b.preco); a.atualizaPreco(10); b.atualizaPreco(20); System.out.println(a.codigo+&quot; &quot; +a.nome+&quot; &quot;+a.preco); System.out.println(b.codigo+&quot; &quot; +b.nome+&quot; &quot;+b.preco); } }
  • 19. 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.
  • 20. 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.
  • 21. 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
  • 22. 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”
  • 23. 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; } }
  • 24. 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;
  • 25. 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;; }}
  • 26. 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); } }
  • 27. 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.
  • 28. Herança Meios de transporte Terrestres Aquáticos Aéreos
  • 29. 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 .
  • 30. 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.
  • 31. 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 .
  • 32. 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.
  • 33. 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
  • 34. 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”); } }
  • 35. 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); }
  • 36. Polimorfismo - Sobreposição int getAcidoCitrico() { return acidoCitrico; } void setAcidoCitrico(int acido) { this.acidoCitrico=acido; } void descascar () { System.out.println( “ Aqui eu descasco so citricos”); } }
  • 37. 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; } }
  • 38. 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); } }
  • 39. 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.
  • 40. 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.
  • 41. 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.
  • 42. 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.