Java e Orientação a Objetos
Prof. Sérgio Ricardo
Paradigma de Orientação a Objetos
• A orientação a objetos (OO) é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software interação entre diversas unidades de software chamadas de objetos (Wikipédia).
Paradigma de Orientação a Objetos
• Características:
– Alta reutilização de software,
– Desenvolvimento sempre evolutivo,
– Construções complexas a partir de construções– Construções complexas a partir de construçõessimples,
– Manutenção tende a ser simples.
3
Elementos básicos em OO
• Classes
• Objetos/Instâncias
4
Orientação a Objetos – Definições
• Classe representa um conjunto de objetoscom características afins.
• Uma classe define o comportamento dosobjetos através de seus métodos, e quaisobjetos através de seus métodos, e quaisestados ele é capaz de manter através de seusatributos.
• Exemplos: pessoa, carro
Orientação a Objetos – Definições
• Subclasse é uma nova classe que herda características de sua(s) classe(s) ancestral(is)
Pessoa Carrosuperclasse
• Classes contém:
– Atributos: determinam o estado do objeto;
– Métodos: semelhantes a procedimentos em
linguagens convencionais, são utilizados para
manipular os atributos.
Funcionário Cliente Motor Rodasubclasse
Orientação a Objetos – Definições
• Atributo são características de um objeto. Basicamente a estrutura de dados que vai representar a classe.
– Pessoa: nome, telefone
– Cliente: cnpj, nome
– Usuario: nomeacesso, senha
Orientação a Objetos – Definições
• Os atributos possuem valores. O conjunto de valores dos atributos de um determinado objeto é chamado de estado
– Ex. o atributo cor pode conter o valor azul.
Orientação a Objetos – Definições
• Método define as habilidades (ações, funções) dos objetos.
• Um método em uma classe é apenas uma definição. A ação sóocorre quando o método é invocado através do objeto
Orientação a Objetos
• Objeto é uma entidade que possui um estado e um conjunto de operações definidas para funcionar neste estado (“Engenharia de Software”, Sommerville)
• Instanciação é o ato de criar um objeto.
classe
Orientação a Objetos
• Um objeto é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos.
• Exemplo de objetos da classe Funcionário: João, • Exemplo de objetos da classe Funcionário: João, José, Maria; classe Cliente: Pedro, José
• Os objetos se comunicam por meio de solicitaçãode serviços (métodos) de outros objetos, e se necessário, por troca de informações
• Orientação a objetos ajuda a organizar a programação e a encapsular a lógica de negócios.
Orientação a Objetos – Definições
Orientação a Objetos – Definições
• Abstração é a habilidade de concentrar nos aspectosessenciais de um contexto qualquer, ignorandocaracterísticas menos importantes ou acidentais.
• Em modelagem orientada a objetos, uma classe éEm modelagem orientada a objetos, uma classe éuma abstração de entidades existentes no domíniodo sistema de software
Orientação a Objetos – Definições
• Herança (ou generalização) é o mecanismo pelo qualuma classe (sub-classe) pode estender outra classe(super-classe), aproveitando seus comportamentos(métodos) e variáveis possíveis (atributos).
Orientação a Objetos – Definições
• Associação é o mecanismo pelo qual um objeto se relacionacom outros.
• Exemplo, vários alunos podem estar associados à um únicoprofessor e um único aluno pode estar associado à váriosprofessores. Neste caso, não existe um relacionamento deprofessores. Neste caso, não existe um relacionamento deposse entre esses objetos. Todos os objetos sãoindependentes. Um aluno pode existir sem a necessidade deum professor, da mesma forma que é possível existir umprofessor sem a necessidade da existência de um aluno.
• Casos especiais: Agregação e Composição
Orientação a Objetos – Definições
• Agregação representa um todo que é composto de várias partes. – Exemplo: um conselho é um agregado de membros, da mesma forma que
uma reunião é um agregado de uma pauta, uma sala e de participantes. A implementação deste relacionamento não é uma contenção, pois uma reunião não CONTÉM uma sala. Assim sendo, as partes da agregação podem fazer outras coisas em outras partes da aplicação, eles podem ser referenciados por outras coisas em outras partes da aplicação, eles podem ser referenciados por outros objetos e não somente por um objeto
– Em UML, a agregação é representada por uma linha com um losango vazio do lado da classe que manda no relacionamento
Orientação a Objetos – Definições
• A composição, diferentemente da agregação, é um relacionamento de contenção.
• Um objeto (container) CONTÉM outros objetos (elementos). Esses elementos que estão contidos dentro de outro objeto dependem dele para existir. Eles são criados e destruídos de acordo com o seu container. Exemplo: Exemplo:
– Container: pedido, e seus elementos seriam seus itens. Não faz sentido existirem itens de pedido sem existir um pedido onde tais itens estariam contidos
• Em UML é representada por uma linha com um losango preenchido do lado da classe dona do relacionamento
Orientação a Objetos – Definições
• Encapsulamento consiste na separação de aspectos internos e externos de um objeto. Este mecanismo é utilizado amplamente para impedir o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente apenas os métodos que alteram estes estados. apenas os métodos que alteram estes estados.
Exemplo: você não precisa conheceros detalhes dos circuitos de umtelefone para utilizá-lo. A carcaça dotelefone encapsula esses detalhes,provendo a você uma interface maisamigável (os botões, o monofone e ossinais de tom)
Orientação a Objetos – Definições
• Polimorfismo é a capacidade de uma variável se referir a objetos de diferentes classes em tempo de execução
• Ocorre quando o método que já foi definido no ancestral é redefinido em seu descendente com comportamento diferente.diferente.
Formas de Polimorfismos
• Redefinição (overriding): mesma função mas comportamentos diferentes.
• Sobrecarga(overloading): nome de uma função usado mais de uma vez com diferentes
20
função usado mais de uma vez com diferentes tipos de parâmetros.Ex: operação soma com dois parâmetros reais e outra com parâmetros inteiros.
Redefinição de função
• Capacidade de um objeto responder com diferentes
comportamentos uma mesma solicitação.
Ex. Suponha um método que receba um objeto
ContaEmBanco e que neste método seja solicitado a
ativação do método Sacar.ativação do método Sacar.
• O comportamento do objeto vai ser diferente em
função do objeto real:
1. ContaEspecial permite que o saldo fique negativo
2. ContaComum não
O comportamento do objeto será relativo ao
objeto real a qual é feita a referência
Sobrecarga de função
• Atribui a um único operador a capacidade de
agir de diferentes formas em função dos
parâmetros recebidos.
• Ex. na classe ContaEmBanco, o método • Ex. na classe ContaEmBanco, o método
Depositar possui duas implementações
diferentes:
1. uma para depósitos em dinheiro
2. outra para depósitos em chequeO serviço escolhido depende do parâmetro
enviado junto à ativação do serviço
(cheque ou dinheiro)
Orientação a Objetos – Definições
• Linguagem Orientada a Objetos
• Criada pela Sun (http://www.sun.com) e mantida (http://www.sun.com) e mantida através de um comitê (http://www.jcp.org)
• Em 2009 a Oracle comprou a Sun
Por que usar Java?
• Java é multiplataforma, ou seja, um programa escrito em Java pode ser executado em qualquer plataforma (sistema operacional combinado com hardware) sem necessidade de alterações no código fontecódigo fonte
• Java é uma arquitetura aberta, extensível, com várias implementações, o que a torna independente do fornecedor.
• Java pode ser baixada gratuitamente do site da
Sun.
Por que usar Java?
• Java é uma linguagem independente de plataformaque pode ser utilizada em vários produtoseletrônicos, tais como torradeiras e refrigeradores.
• Java é uma linguagem completamente orientada aJava é uma linguagem completamente orientada aobjeto com forte suporte a técnicas adequadas deengenharia de software
• Java é uma das linguagens de desenvolvimento desoftwares mais utilizadas no mundo.
Como Java Funciona
• Em uma linguagem de programação como C e Pascal, temos o seguinte quadro quando vamos compilar um programa..
Código fonte em cTeste.cTeste.c
Gera código binário para um determindao SO
Teste.exe
Compila
Sistema Operacional (SO)
Como Java Funciona
• O código fonte é compilado para uma plataforma e sistema operacional específicos. Muitas vezes, o próprio código fonte é desenvolvido visando uma única plataforma!
• Na maioria das vezes, a sua aplicação se utiliza das bibliotecas do sistema operacional, como, por exemplo, a de interface gráfica para desenhar as 'telinhas'. A biblioteca de interface gráfica do Windows é bem diferente das do Linux.
Como Java funciona
• Maquina Virtual
– Um mecanismo que permite executar código em Java em qualquer plataforma.
• Java utiliza o conceito de máquina virtual, ondeexiste uma camada extra entre o sistema operacionale a aplicação, responsável por “traduzir” (não éapenas isso) o que sua aplicação deseja fazer para asrespectivas chamadas do sistema operacional noqual ela está rodando no momento.
Como Java funciona
• A máquina virtual Java (JVM)
– É uma máquina imaginária que é implementada pela emulação de um software sobre uma máquina real.máquina real.
– Prover uma especificação de plataforma de hardware no qual todos os códigos java são compilados. Essa especificação torna os programas java independente de plataforma porque toda compilação é feita para uma máquina imaginária.
30
Como Java Funciona
AloMundo.class
AloMundo.java
Compila
Instalando a plataforma
Conceitos Iniciais
• JRE (Java Runtime Environment): ambiente de execução Java, formado pela JVM e bibliotecas, tudo que você precisa para executar uma aplicação Java. aplicação Java.
• JDK (Java Development Kit): Kit para desenvolvimento. Ele é formado pela JRE somado a ferramentas, como o compilador.
• Tanto o JRE e o JDK podem ser baixados do site http://java.sun.com.
Instalando a plataforma
Conceitos Iniciais
• Quando falamos de Java Virtual Machine, estamos falando de uma especificação. Ela diz como o bytecode deve ser interpretado pela como o bytecode deve ser interpretado pela JVM. Portanto, existem várias JVM por exemplo: – Oracle JVM
– JRockit da BEA
– J9 da IBM
Primeiro Programa em Java
SelecioneFile→New File
Primeiro Programa em Java
Selecione Java
Clique em Next
Classe JavaPrincipal
Digite o nome do Arquivo
Primeiro Programa em Java
Clique em Finish
Primeiro Programa em Java
Comentários
Comentários
• Utilizados para documentar parte do código
• Não fazem parte do programa – não são compiladoscompilados
• Documentar programas através de comentários é uma boa prática de programação
Primeiro Programa em Java
Especificador de AcessoEm java todo código deve ser
colocado em uma classeNome da Classe
Indica que, a classe está acessivel a outras classes de
outros pacotes
Primeiro Programa em Java
Indica o início de um bloco
Indica o fim de um bloco
Primeiro Programa em Java
Método realiza uma tarefa, mas não retorna nehuma
informação
A execução de qualquer programa em java inicia pelo
main
Exceto Applets
Os parentese indicam que o main é um
método
Primeiro Programa em Java
System.out
É a saída padrão do sistema
A mensagem
Primeiro Programa em Java
• Saída de Dados
– Para saída dos dados podemos usar um dos comandos:comandos:
• System.out.print()
• System.out.println()
Saída do Programa
Tipos de Dados Primitivos
Declarando e inicializando variáveis
Exemplo
As 53 palavras-chave de Java
Operadores
Operadores de Incremento
Operadores Relacionais
Operadores Lógicos
Obtendo entrada do teclado
• Existem várias formas:
– Classe Scanner
– Interface Gráfica– Interface Gráfica
Classe Scanner
• Encontrada no pacote java.util
Etapas para obter uma entradaIndica que queremos utilizar a
classe Scanner
Método main
Declara a classe
Etapas para obter uma entradaIndica que queremos utilizar a
classe Scanner
Cria uma variável do tipoScanner
Cria uma variável do tipoScanner
Imprime umamensagem para o
usuário
Etapas para obter uma entrada
Imprime o valor daentrada
Recebe a entrada do usuário
Conversão de String
• É possível converter String para qualquer tipo primitivo
– int – Integer.parseInt( string )
– Float – Float.parseFloat( string )– Float – Float.parseFloat( string )
– Double - Double.parseFloat( string )
• Da mesma forma é possível converter tipos primitivos para String
Conversão de String
Convertendo de String para inteiro
A API Java
Estruturas de Controle
• Estruturas de Seleção
• Estruturas de Repetição
Estrutura de Seleção
• Java possui as seguintes estruturas de seleção
– if
– if – else
– switch
Comando if
• Especifica que um comando ou bloco será executado se e somente se uma determinada condição booleana for verdadeira
Comando if - else
• Especifica que um comando ou bloco será executado quando uma condição booleana for verdadeira e outro comando quando a condição for falsafor falsa
Comando switch
• Permite multiplicidade de escolha
Estruturas de Repetição
• Permite executar um bloco de instruções um número determinado de vezes
– while– while
– do – while
– for
Comando while
• Os comandos no laço while são executados enquanto uma condição booleana for verdadeira
Comando do - while
• A principal diferença no do – while é que os comandos são executados pelo menos uma vez;
Comando for
• Permite a execução de um comando ou um bloco um pré-definido número de vezes