Disciplina: Programação III Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 70
|
|
- Salvador da Costa Palhares
- 8 Há anos
- Visualizações:
Transcrição
1 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: TRABALHANDO COM CLASSES E OBJETOS Origem: Capítulo 3 Introdução a classes e Objetos. Livro: Java Como Programar, Deitel & Deitel, 6ª. Edição; capítulo 4 Orientação a Objetos Básica, capítulo 6 Modificadores de Acesso e Atributos de Classe. Apostila FJ-11 (Java e Orientação a Objetos) Escrever um programa utilizando uma linguagem de programação orientada a objeto significa criar um programa que será composto por uma série de objetos (identificados a partir do mundo real), com propriedades, características e interações. Um conjunto de objetos com características similares é representado através de uma classe, e assim, a programação orientada a objeto foca sua atenção na identificação das classes que irão compor um problema. Qualquer característica, seja informacional ou comportamental, na programação orientada a objeto deverá ser definida através de uma classe. Mesmo que o programa seja muito pequeno e requeira apenas o método main(), ainda sim este deverá ser declarado através de uma classe, como já comentado anteriormente UMA CLASSE EM JAVA Considere um programa para um banco. Uma entidade extremamente importante para o sistema é a conta. A idéia aqui é generalizar alguma informação, juntamente com funcionalidades que toda conta deve ter. O que toda conta tem de importante? Número da conta; Nome do cliente; Saldo; Limite. O que toda conta faz de importante? Sacar uma quantidade x; Depositar uma quantidade x; Imprimir o nome do dono da conta; Devolver o saldo atual; Transferir uma quantidade x entre uma conta e outra; Devolver o tipo de conta. Com isso, tem-se o projeto de uma conta bancária. Podemos pegar esse projeto e acessar seu saldo? Não. O que temos ainda é o projeto (a classe). Antes, precisamos construir (instanciar) uma conta, para poder acessar o que ela tem, e pedir a ela que faça alguma coisa. Declaração básica de uma classe em Java Considerando as propriedades que uma Conta deve ter (e não o que ela faz), teria-se o seguinte código Java: /* Arquivo: Conta.java Contém o tratamento de uma Conta Bancária */
2 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 71 public class Conta { int numero; String nome; double saldo; double limite; //.. Estes são os atributos que toda conta, quando criada, vai ter. Repare que essas variáveis foram declaradas fora de um bloco de método, sendo diferente de variáveis locais a métodos. Quando uma variável é declarada diretamente dentro do escopo da classe, é chamada de variável de objeto (ou de instância), ou atributo. A declaração de toda classe deve conter a palavra-chave class seguida pelo nome da classe. A palavra-chave public é um modificador de acesso, que declara que o acesso à classe é público. O corpo de cada classe estará entre os delimitadores { e A declaração de todo atributo segue a sintaxe de declaração de variáveis, visto os atributos serem as variáveis de instância de um objeto CRIANDO E USANDO UM OBJETO Criar uma classe é apenas declarar as definições de suas características. Para utilizar essas características é preciso instanciar um objeto. Uma vez que se criou uma classe, ela poderá ser utilizada em outras classes, através de sua instanciação. Cada objeto criado terá seu estado e comportamento próprios, além da identidade única, e essas serão justamente as características que poderão ser acessadas pelos objetosclientes (de acordo com a especificação de acesso da característica, claro). Para criar (construir, instanciar) uma Conta, basta usar a palavra-chave new. Utiliza-se também os parênteses, que serão explicados em item posterior: /* Arquivo: Programa.java Programa responsável por utilizar a classe Conta */ public class Programa { public static void main(string[] args) { new Conta(); O código acima é conhecido como Expressão de criação de instância de classe (formado pela palavra-chave new e o nome da classe seguido por parênteses disparando um construtor que será posteriormente detalhado). O código acima cria um objeto do tipo Conta, mas como acessar esse objeto que foi criado? É preciso ter alguma forma de nos referenciarmos a esse objeto, o que é feito através de uma variável. O código acima deve ser substituído por:
3 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 72 /* Arquivo: Programa.java Programa responsável por utilizar a classe Conta */ public class Programa { public static void main(string[] args) { Conta minhaconta; minhaconta = new Conta(); Uma classe, após ser criada em Java, pode ser considerada como um tipo definido pelo usuário, e portanto, podemos ter uma variável declarada como sendo desse tipo. Pode parecer estranho escrevermos duas vezes Conta: uma vez na declaração da variável e outra vez no uso do new. As duas instruções acima descritas (declaração de uma variável do tipo da classe e instanciação dessa variável) podem ser disponibilizadas em uma única instrução, como no exemplo abaixo: Conta minhaconta = new Conta(); //forma mais comum de declaração Através da variável minhaconta, agora é possível acessar o objeto recém criado para alterar seu nome, seu saldo, etc: /* Arquivo: Programa.java Programa responsável por utilizar a classe Conta */ public class Programa { public static void main(string[] args) { Conta minhaconta = new Conta(); /* Alteração de valores de atributos do objeto minhaconta */ minhaconta.nome = "Duke"; minhaconta.saldo = ; System.out.println("Saldo atual: " + minhaconta.saldo); É importante destacar que o acesso aos atributos/métodos de um objeto ocorre através da notação de ponto, com o nome do objeto à esquerda do ponto e o atributo/método à direita. OBSERVAÇÃO: (1) Apesar do acesso direto aos valores de um objeto ser possível, segundo os princípios da orientação a objeto (encapsulamento) ele deve ser evitado. Um objeto-cliente não deve acessar diretamente os atributos de um outro objeto. Para tal acesso / atualização devem ser criados métodos getters e setters (e habitualmente tem-se um método get() e outro set() para cada atributo da classe que precise ser manipulado).
4 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 73 (2) É comum criar uma classe separada para conter o método main() e fazer a chamada do(s) método(s) que irão efetivamente realizar a execução do programa, similar ao que ocorre no exemplo acima com as classes Conta e Programa MÉTODOS Dentro da classe, também deve ser declarado o que cada conta faz e como isto é feito, ou seja, o comportamento que cada classe tem. Por exemplo, de que maneira uma conta saca dinheiro? Isso é especificado dentro da própria classe Conta, e não em um local desatrelado das informações da própria conta. É por isso que essas funções são chamadas de métodos. Pois é a maneira de fazer uma operação com um objeto. Assim, qualquer tarefa que precise ser realizada em um programa Java deve ser declarada através de um método, que irá conter os mecanismos necessários para a execução da tarefa. Uma declaração de método é composta por: Cabeçalho / Assinatura formado por especificador de acesso (opcional) + tipo de dados de retorno (void para nenhum retorno) + nome do método + parênteses (e dentro deles a lista de parâmetros - a declaração das variáveis locais que são parâmetros de entrada para o método em questão. Parênteses vazios indicam que não há parâmetro de entrada); Corpo contém o código-fonte a ser executado, delimitado entre chaves. Em caso de método com retorno indicado no cabeçalho em algum momento antes do delimitador final deve estar presente a palavra-chave return, seguido do retorno esperado. Por exemplo: Para criar um método que saca uma determinada quantidade e não devolve nenhuma informação para quem acionar esse método tem-se o seguinte código. /* Arquivo: Conta.java Contém o tratamento de uma Conta Bancária */ public class Conta { //Declaração de variáveis de instância int numero; String nome; double saldo; double limite; //Declaração de método void sacar (double quantidade) { double novosaldo = this.saldo - quantidade; this.saldo = novosaldo; A palavra-chave void indica que não há nenhum retorno para o método, ou seja, quando você pedir para a conta sacar uma quantia, nenhuma informação será enviada de volta a quem pediu. Quando alguém pedir para sacar, ele também vai dizer quanto quer sacar. Por isso precisamos declarar o método com tal informação de entrada - um argumento do método (ou parâmetro).
5 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 74 Essa variável é uma variável comum, chamada também de temporária ou local, pois, ao final da execução desse método, ela deixa de existir. Dentro do método, é declarada uma nova variável (novosaldo). Essa variável, assim como o argumento, vai morrer no fim do método, pois este é seu escopo. Para diferenciar o uso de variáveis locais ao método e variáveis de instância da classe é utilizada a palavra-chave this, para se referenciar a um valor do objeto (como é feito no exemplo acima para this.saldo). Da mesma forma, temos o método para depositar alguma quantia: class... { //... outros atributos e métodos... void depositar (double quantidade) { this.saldo += quantidade; Observe que, agora, não foi usada uma variável auxiliar e, além disso, usou-se o comando reduzido += para deixar o método bem simples. O += soma quantidade ao valor antigo de saldo e guarda no próprio saldo o valor resultante. Para mandar uma mensagem ao objeto e solicitar que ele execute um método, também é usada a notação de ponto. O termo usado para isso é invocação (chamada) de método. O método main() é o único método executado automaticamente pela Java Virtual Machine. Qualquer outro método para ser executado deverá ser invocado por algum outro método. O código a seguir saca dinheiro e depois deposita outra quantia na conta exemplo que estamos trabalhando. /* Arquivo: SacaEDeposita.java Classe responsável por realizar saques e depósitos em uma conta */ public class SacaEDeposita { public static void main(string[] args) { // criando a conta Conta minhaconta = new Conta(); // alterando os valores de minhaconta minhaconta.nome = "Duke"; minhaconta.saldo = 1000; // saca 200 reais minhaconta.sacar(200); // deposita 500 reais minhaconta.depositar(500);
6 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 75 // exibe saldo da conta System.out.println(minhaConta.saldo); Uma vez que seu saldo inicial é 1000 reais, se sacarmos 200 reais, depositarmos 500 reais e imprimirmos o valor do saldo, o que será impresso? OBSERVAÇÃO: A chamada de um método deve estar sempre associada aos parênteses ao final do nome do método, mesmo que o método em questão não contenha argumentos de entrada; Observar no exemplo acima que a chamada dos métodos sacar() e depositar() são realizadas com o informe de um argumento cada, que será o valor passado para o método, já que ambos requerem parâmetros de entrada em suas execuções; Um método pode especificar múltiplos parâmetros, separando cada um deles do próximo com uma vírgula. O número de argumentos em uma chamada de método deve corresponder ao número de parâmetros na lista de parâmetros da declaração do método chamado. Além disso, os tipos de dados dos argumentos na chamada de método devem ser consistentes com os tipos dos parâmetros correspondentes na declaração do método. Não precisa haver correspondência de nome entre o argumento passado para o método e o parâmetro no método declarado MÉTODOS COM RETORNO Um método sempre tem que retornar alguma coisa, nem que essa coisa seja nada, como nos exemplos anteriores onde é usada a palavra-chave void. Um método pode retornar um valor para o cliente que o chamou. No caso do exemplo do método sacar() pode-se devolver um valor booleano indicando se a operação foi bem sucedida. /* Arquivo: Conta.java Contém o tratamento de uma Conta Bancária atualização */ public class Conta { //Declaração de variáveis de instância int numero; String nome; double saldo; double limite; //Método para realização da operação de saque, com retorno boolean sacar (double valor) { if (this.saldo < valor) { return false; else { this.saldo = this.saldo - valor; return true;
7 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 76 //Método para realização da operação de depósito, sem retorno void depositar (double quantidade) { this.saldo += quantidade; Agora a declaração do método mudou. O método sacar() não tem void na frente, isto quer dizer que, quando é acessado, ele devolve algum tipo de informação. No caso, um boolean. A palavra-chave return indica que o método vai terminar ali, retornando tal informação. Exemplo de uso: minhaconta.saldo = 1000; boolean consegui = minhaconta.sacar(2000); if(consegui) { System.out.println("Consegui sacar"); else { System.out.println("Não consegui sacar"); Ou então, posso eliminar a variável temporária, se desejado: minhaconta.saldo = 1000; System.out.println(minhaConta.sacar(2000)); Mais adiante, veremos que algumas vezes é mais interessante lançar uma exceção (exception) nesses casos. Trabalhando com mais de um objeto O programa pode manter na memória não apenas uma conta, porém várias. Essa possibilidade é demonstrada no exemplo abaixo. /* Arquivo: TestaDuasContas.java Classe que trabalha com dois objetos da classe conta */ public class TestaDuasContas { public static void main(string[] args) { Conta minhaconta = new Conta(); minhaconta.saldo = 1000; System.out.println( Saldo da 1ª. Conta: + minhaconta.saldo); Conta meusonho = new Conta(); meusonho.saldo = ; System.out.println( Saldo da 2ª. Conta: + meusonho.saldo);
8 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: VARIÁVEIS POR REFERÊNCIA Quando declaramos uma variável para associar a um objeto, na verdade, essa variável não guarda uma cópia do objeto (como ocorre com tipos de dados primitivos), e sim uma maneira de acessá-lo, chamada de referência, que é uma referência a memória onde o objeto está armazenado. É por esse motivo que é necessário o uso do comando new após a declaração da variável. Seja o exemplo parcial de código: public static void main(string args[]) { Conta c1 = new Conta(); Conta c2 = new Conta(); O correto aqui é dizer que c1 se refere a um objeto. Não é correto dizer que c1 é um objeto, pois c1 é uma variável por referência, apesar de, depois de um tempo, os programadores Java falarem Tenho um objeto c1 do tipo Conta, mas apenas para encurtar a frase Tenho uma referência c1 a um objeto do tipo Conta. Esse código nos deixa na seguinte situação: Internamente, c1 e c2 vão guardar um número que identifica em que posição da memória as contas instanciadas se encontram. Dessa maneira, ao utilizarmos o. para navegar, o Java vai acessar a conta que se encontra naquela posição de memória, e não uma outra. Para quem conhece, é parecido com um ponteiro, porém você não pode manipulá-lo e utilizá-lo para guardar outras coisas. Agora vamos a um outro exemplo. /* Arquivo: TestaReferencias.java Aplicativo responsável por testar declaração de variável por referência */ public class TestaReferencias { public static void main(string args[]) { Conta c1 = new Conta(); c1.depositar(100); Conta c2 = c1; // linha importante!
9 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 78 c2.depositar(200); System.out.println(c1.saldo); System.out.println(c2.saldo); Qual é o resultado do código acima? O que aparece ao rodar? O que acontece aqui? O operador de atribuição ( = ) copia o valor de uma variável. Mas qual é o valor da variável c1? É o objeto? Não. Na verdade, o valor guardado é a referência (endereço) de onde o objeto se encontra na memória principal. Na memória, o que acontece nesse caso é descrito pela figura abaixo. Quando fizemos c2 = c1, c2 passa a fazer referência para o mesmo objeto que c1 referencia nesse instante. Então, nesse código em específico, quando utilizamos c1 ou c2 estamos nos referindo exatamente ao mesmo objeto! Elas são duas referências distintas, porém apontam para o mesmo objeto! Compará-las com == irá nos retornar true, pois o valor que elas carregam é o mesmo! Outra forma de perceber, é que executamos apenas um new, então só pode haver um objeto Conta na memória. Atenção: não estamos discutindo aqui a utilidade de fazer uma referência apontar pro mesmo objeto que outra. Essa utilidade ficará mais clara quando passarmos variáveis do tipo referência como argumento para métodos. new O que exatamente faz o new? O new executa uma série de tarefas, que veremos mais adiante. Mas, para melhor entender as referências no Java, saiba que o new, depois de alocar a memória para esse objeto, devolve uma flecha, isto é, um valor de referência. Quando você atribui isso a uma variável, essa variável passa a se referir para esse mesmo objeto. Podemos então ver outra situação no código a seguir. /* Arquivo: TestaReferencias2.java Aplicativo responsável por testar declaração de variável por referência */
10 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 79 public class TestaReferencias2 { public static void main(string args[]) { Conta c1 = new Conta(); c1.nome = "Duke"; c1.saldo = 227; Conta c2 = new Conta(); c2.nome = "Duke"; c2.saldo = 227; if (c1 == c2) { System.out.println("Contas iguais"); else { System.out.println("Contas diferentes"); O operador == compara o conteúdo das variáveis, mas essas variáveis não guardam o objeto, e sim o endereço em que ele se encontra. Como em cada uma dessas variáveis guardamos duas contas criadas diferentemente, eles estão em espaços diferentes da memória, o que faz o teste no if retornar false. As contas podem ser equivalentes no nosso critério de igualdade, porém elas não são o mesmo objeto. Quando se trata de objetos, pode ficar mais fácil pensar que o == compara se os objetos (referências, na verdade) são o mesmo, e não se são iguais em termos de estado. Para saber se dois objetos têm o mesmo conteúdo, você precisa comparar atributo por atributo. Veremos uma solução mais elegante para isso também. Mais um exemplo: E se quisermos ter um método que transfere dinheiro entre duas contas? Podemos ficar tentados a criar um método que recebe dois parâmetros: conta1 e conta2 do tipo Conta. Mas cuidado: assim estamos pensando de maneira procedural. A idéia é que, quando chamarmos o método transferir(), já teremos um objeto do tipo Conta (o this), portanto o método recebe apenas um parâmetro do tipo Conta, a conta destino (além do valor). Seja o código abaixo: /* Arquivo: Conta.java Tratamento de uma conta acréscimo de código */ public class Conta { // atributos e métodos... //Método que realiza transferência entre uma conta origem e //outra destino void transferir(conta destino, double valor) { this.saldo = this.saldo - valor; destino.saldo = destino.saldo + valor;
11 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 80 Para deixar o código mais robusto, poderíamos verificar se a conta possui a quantidade a ser transferida disponível. Para ficar ainda mais interessante, pode-se chamar os métodos depositar() e sacar() já existentes para fazer essa tarefa. Um possível código está a seguir transcrito. /* Arquivo: Conta.java Tratamento de uma conta acréscimo de código */ public class Conta { // atributos e métodos... boolean transferir(conta destino, double valor) { boolean retirou = this.sacar(valor); if (retirou == false) { // não deu pra sacar! return false; else { destino.depositar(valor); return true; Quando passamos uma conta como argumento, o que será que acontece na memória? Será que o objeto é clonado? No Java, a passagem de parâmetro funciona como uma simples atribuição, como no uso do =. Então, esse parâmetro vai copiar o valor da variável do tipo Conta que for passado como argumento. E qual é o valor de uma variável dessas? Seu valor é um endereço, uma referência, nunca um objeto. Por isso não há cópia de objetos aqui. Esse último código poderia ser escrito com uma sintaxe muito mais clara. Como? Perceber que o nome deste método poderia ser transferirpara() ao invés de só transferir(). A chamada do método fica muito mais natural, pois é possível ler a frase em português que ela tem um sentido. conta1.transferirpara(conta2, 50); A leitura deste código seria conta 1 transfere para conta 2 R$50.
12 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: ATRIBUTOS Os atributos ou variáveis de instância declaradas em uma classe têm valores exclusivos para cada objeto da classe, e portanto, havendo mais de um objeto da mesma classe declarados em um mesmo método, esses terão seus valores tratados completamente em separado. Ao contrário da maior parte das classes e dos métodos, os atributos costumam ser declarados com o modificador de acesso private, indicando que tais variáveis são acessíveis apenas dentro da própria classe na qual estão declaradas. Essa especificação é seguida para preservar o princípio de encapsulamento da orientação a objetos. Normalmente as variáveis de instância são declaradas logo após a declaração do cabeçalho da classe, como forma de ficarem mais legíveis e fáceis de serem localizadas para serem utilizadas nos métodos das classes. No entanto suas declarações podem ficar em qualquer ponto de uma classe, desde que estejam fora da declaração de um método. Lembrando que se estiverem dentro da declaração de um método serão consideradas variáveis locais ao método, e não variáveis de instância. As variáveis do tipo atributo, diferentemente das variáveis temporárias (declaradas dentro de um método), recebem um valor padrão. No caso numérico valem 0, no caso de boolean valem false, no caso de classes valem null. Também é possível estabelecer valores default, como segue no exemplo: public class Conta { //Declaração de atributos private int numero = 1234; private String nome = "Duke"; private String cpf = " "; private double saldo = 1000; private double limite = 1000; /* Declaração de método set para manipulação do atributo numero Recebe um Parâmetro de entrada cujo valor será repassado para o atributo */ public void setnumero (int numero) { this.numero = numero; //this.numero se refere à variável de //instância. numero se refere ao //parâmetro de entrada /* Declaração de método get para manipulação do atributo numero retorna o valor do atributo, para o método que o houver chamado */ public int getnumero() { return this.numero; Nesse caso, quando você criar uma conta, seus atributos já estão populados com esses valores colocados. Essa solução não é a mais comum para inicialização de atributos, normalmente trabalha-se com construtores (que serão posteriormente detalhados).
13 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 82 Imagine que, agora, começamos a aumentar nossa classe Conta e queremos adicionar sobrenome e cpf do cliente dono da conta. Começaríamos a ter muitos atributos relacionados ao cliente e, se você pensar direito, uma conta não tem nome, nem sobrenome, nem cpf, quem tem esses atributos é um cliente. Então podemos criar uma nova classe e fazer uma composição. Os atributos também podem ser referências para outras classes. Suponha a seguinte classe Cliente, e uma declaração alterada da classe Conta: class Cliente { String nome; String sobrenome; String cpf; class Conta { int numero; double saldo; double limite; Cliente titular; //.. E dentro do main() da classe de teste, tem-se: class Teste { public static void main(string[] args) { Conta minhaconta = new Conta(); Cliente c = new Cliente(); minhaconta.titular = c; //... Aqui, simplesmente houve uma atribuição. O valor da variável c é copiado para o atributo titular do objeto ao qual minhaconta se refere. Em outras palavras, minhaconta agora tem uma referência ao mesmo cliente ao qual c se refere, e pode ser acessado através de minhaconta.titular. Você pode realmente navegar sobre toda essa estrutura de informação, sempre usando a notação de ponto: Cliente clientedaminhaconta = minhaconta.titular; clientedaminhaconta.nome = "Duke"; Ou ainda, pode fazer isso de uma forma mais direta e até mais elegante: minhaconta.titular.nome = "Duke";
14 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 83 Um sistema orientado a objetos é um grande conjunto de classes que vai se comunicar, delegando responsabilidades para quem for mais apto a realizar determinada tarefa. A classe Banco usa a classe Conta que usa a classe Cliente, que usa a classe Endereco. Dizemos que esses objetos colaboram, trocando mensagens entre si. Por isso acabamos tendo muitas classes em nosso sistema, e elas costumam ter um tamanho relativamente curto. Mas, e se dentro do meu código eu não desse new em Cliente e tentasse acessá-lo diretamente? public class Teste { public static void main(string[] args) { Conta minhaconta = new Conta(); minhaconta.titular.nome = "paulo"; //... Quando damos new em um objeto, ele o inicializa com seus valores default, 0 para números, false para boolean e null para referências. null é uma palavra-chave em Java, que indica uma referência para nenhum objeto. Se, em algum caso, você tentar acessar um atributo ou método de alguém que está se referenciando para null, você receberá um erro durante a execução (NullPointerException, que veremos mais à frente). Dá para perceber, então, que o new não traz um efeito cascata, a menos que você dê um valor default (ou use construtores, que também veremos mais a frente). Uma forma de resolver a questão comentada poderia ser como no código seguinte. class Conta { int numero; double saldo; double limite; Cliente titular = new Cliente(); // quando chamarem new Conta, //haverá um new Cliente para ele. Com esse código, toda nova conta criada já terá um novo cliente associado, sem necessidade de instanciá-lo logo em seguida da instanciação de uma conta. Qual alternativa você deve usar? Depende do caso: para toda nova conta você precisa de um novo cliente? É essa pergunta que deve ser respondida. Nesse nosso caso a resposta é não, mas depende do nosso problema. Atenção: para quem não está acostumado com referências, pode ser bastante confuso pensar sempre em como os objetos estão na memória para poder tirar as conclusões do que ocorrerá ao executar determinado código, por mais simples que ele seja. Com o tempo, você adquire a habilidade de rapidamente saber o efeito de atrelar as referências, sem ter de gastar muito tempo para isso. É importante, nesse começo, você estar sempre pensando no estado da memória. E realmente lembrar que, no Java uma variável nunca carrega um objeto, e sim uma referência para ele facilita muito.
15 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: UM NOVO EXEMPLO Além do exemplo do Banco criado anteriormente, vamos ver como ficariam certas classes relacionadas a uma fábrica de carros. Se uma classe Carro, com certos atributos, que descrevem suas características, e com certos métodos, que descrevem seu comportamento. /* Arquivo: Carro.java Classe com o tratamento de um carro */ //classe Motor componente de um carro class Motor { int potencia; String tipo; //inicialização das características de um motor Motor() { this.potencia = 10; this.tipo = Flex ; //Classe carro, com as características de um carro public class Carro { String cor; String modelo; double velocidadeatual; double velocidademaxima; Motor motor; //liga o carro void ligar() { System.out.println("O carro está ligado"); //acelera uma certa quantidade void acelerar(double quantidade) { double velocidadenova = this.velocidadeatual + quantidade; this.velocidadeatual = velocidadenova; //devolve a marcha do carro int pegarmarcha() { if (this.velocidadeatual < 0) {
16 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 85 return -1; if (this.velocidadeatual >= 0 && this.velocidadeatual < 40) { return 1; if (this.velocidadeatual >= 40 && this.velocidadeatual < 80){ return 2; return 3; Agora, vamos testar nosso Carro em um programa de testes. /* Arquivo: TestaCarro.java Classe com o tratamento para teste de um carro */ import java.util.scanner; public class TestaCarro { public static void main(string[] args) { Carro meucarro = new Carro(); meucarro.motor = new Motor(); Scanner input = new Scanner(System.in); System.out.print( Informe a cor do carro: ); meucarro.cor = input.nextline(); //método que lê uma linha de texto System.out.print( Informe o modelo do carro: ); meucarro.modelo = input.nextline(); System.out.print( Informe a velocidade atual do carro: ); meucarro.velocidadeatual = input.nextdouble(); //método para //leitura de //valor double System.out.print( Informe a velocidade máximo do carro: ); meucarro.velocidademaxima = input.nextdouble(); // liga o carro meucarro.ligar(); // acelera o carro meucarro.acelerar(20); System.out.println(meuCarro.velocidadeAtual);
17 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 86 OBSERVAÇÃO: (1) Da classe Scanner já foram estudados os seguintes métodos: nextint() leitura de um valor numérico inteiro; nextdouble() leitura de um valor numérico em ponto flutuante; nextline() leitura de uma linha de caracteres (do início da linha ao fim, quando se encontra um caracter de nova linha, que não é incluído na string que recebe o valor lido). Um outro método é o seguinte: next() leitura de uma palavra até que se encontre um espaço em branco (espaço, tabulação ou nova linha). Se naquela linha ainda sobrar outros textos esses poderão ser acessados com a chamada de novos métodos. Discussão sobre o comando nextline() e problemas com sua saída -> O uso do nextline() lê o caracter de pula linha, enquanto os outros métodos de leitura de Scanner não. Recomenda-se o uso de um nextline() após cada next() lido só para garantir que o caracter de pula linha será lido. O problema só ocorre se após algum next() tentar-se usar o nextline(), pois este irá reconhecer o caracter de pula linha e assumir que o necessário já foi lido. (2) Sobre a declaração de importação de classe No exemplo acima há uma instrução de importação de classe (a Scanner, pertencente ao pacote java.util). Essa declaração indica ao compilador que o programa utiliza a classe Scanner. A dúvida é: Por que precisa dessa instrução para Scanner, mas não para System, String ou Carro? A maioria das classes utilizadas em programas Java precisa ser importada. As classes System e String pertencem ao pacote java.lang, que é implicitamente importado em todo programa Java, daí não ser necessária uma importação explícita (como no caso de Scanner). Há um relacionamento especial entre as classes que são compiladas no mesmo diretório no disco, como as classes Carro e TestaCarro. Por padrão, considera-se que essas classes estão no mesmo pacote (conhecido como pacote padrão). As classes no mesmo pacote também são importadas implicitamente nos arquivos de código-fonte de outras classes no mesmo pacote, sem requerer a importação explícita. Uma outra forma de declaração de importação de classe pode ser utilizada. Ela é conhecida como nome de classe completamente qualificado. Se o nome da classe for completamente utilizado, a declaração de importação, através da palavra-chave import não é necessária. Por exemplo, a declaração de importação da classe Scanner poderia ser feita da seguinte maneira, reunida com a declaração de criação: java.util.scanner input = new java.util.scanner(system.in); O CONSTRUTOR DE UMA CLASSE O que devemos fazer quando queremos inicializar as variáveis de instância de um objeto no momento de sua instanciação? A resposta a essa pergunta está no Construtor da Classe. E o Java requer a chamada de um construtor para cada objeto que for criado. Quando usamos a palavra chave new, estamos construindo um objeto. Sempre quando o new é chamado, ele executa o construtor da classe. O construtor da classe é um bloco declarado com
18 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 87 o mesmo nome da classe, seguido por parênteses (que pode, ou não, conter argumentos como ocorre com um método comum): class Conta { int numero; Cliente titular; double saldo; double limite; // construtor Conta() { System.out.println("Construindo uma conta."); //.. Então, quando fizermos: Conta c = new Conta(); A mensagem Construindo uma conta aparecerá. É como uma rotina de inicialização que é chamada sempre que um novo objeto é criado. Um construtor pode parecer, mas não é um método. O construtor default Até agora, as nossas classes não possuíam nenhum construtor. Então como é que era possível dar new, se todo new chama um construtor obrigatoriamente? Quando você não declara nenhum construtor na sua classe, o Java cria um para você. Esse construtor é o construtor default, ele não recebe nenhum argumento e o corpo dele é vazio. A partir do momento que você declara um construtor, o construtor default não é mais fornecido. O interessante é que um construtor pode receber um argumento, podendo assim inicializar algum tipo de informação, e não da forma fixa que ocorreria com a inicialização da variável no momento de sua declaração. Pode-se perceber tal situação pelo exemplo abaixo. class Conta { int numero; Cliente titular; double saldo, limite; // construtor Conta (Cliente titular){ this.titular = titular; //..
19 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 88 Esse construtor recebe o titular da conta. Assim, quando criarmos uma conta, ela já terá um determinado titular. O trecho de código acima pode ser complementado por: Cliente carlos = new Cliente(); carlos.setnome("carlos"); Conta c = new Conta(carlos); System.out.println(c.getTitular().setNome()); A necessidade de um construtor Tudo estava funcionando até agora. Para que utilizamos um construtor? A idéia é bem simples. Se toda conta precisa de um titular, como obrigar todos os objetos que forem criados a ter um valor desse tipo? Basta criar um único construtor que recebe essa entrada! O construtor se resume a isso! Dar possibilidades ou obrigar o usuário de uma classe a passar argumentos para o objeto durante o processo de criação do mesmo. Por exemplo, não podemos abrir um arquivo para leitura sem dizer qual é o nome do arquivo que desejamos ler! Portanto, nada mais natural que passar uma String representando o nome de um arquivo na hora de criar um objeto do tipo de leitura de arquivo, e que isso seja obrigatório. Você pode ter mais de um construtor na sua classe e, no momento do new, o construtor apropriado será escolhido. Os diferentes construtores são diferenciados pela sua assinatura. Como nesse caso o nome é o mesmo, será a lista de parâmetros que irá indicar o construtor adequado a ser disparado. Construtor: um método especial? Um construtor não é um método. Algumas pessoas o chamam de um método especial, mas definitivamente não é, já que não possui retorno e só é chamado durante a construção do objeto. Chamando outro construtor Um construtor só pode rodar durante a construção do objeto, isto é, você nunca conseguirá chamar o construtor em um objeto já construído. Porém, durante a construção de um objeto, você pode fazer com que um construtor chame outro, para não ter de ficar copiando e colando. Isso pode ser observado no exemplo a seguir. class Conta { private int numero; private Cliente titular; private double saldo; private double limite; // construtores public Conta (Cliente titular) { // faz mais uma série de inicializações e configurações this.titular = titular; public Conta (int numero, Cliente titular) {
20 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 89 this(titular); // chama o construtor que foi declarado acima //Precisa ser a 1ª. Instrução do código this.numero = numero; //.. Existe um outro motivo, o outro lado dos construtores: facilidade. Às vezes, criamos um construtor que recebe diversos argumentos para não obrigar o usuário de uma classe a chamar diversos métodos do tipo set. No nosso exemplo do Banco, podemos forçar que a classe Cliente receba no mínimo o CPF, dessa maneira um cliente já será construído com um CPF válido. OBSERVAÇÃO: Normalmente os construtores são declarados públicos, isto é, contém a palavrachave public em sua declaração. Java Bean Quando criamos uma classe com todos os atributos privados, seus getters e setters e um construtor vazio (padrão), na verdade estamos criando um Java Bean (mas não confunda com EJB, que é Enterprise Java Beans componentes utilizados em servidores). Um Java Bean é um componente de software reutilizável, seguindo algumas convenções de nomeclatura de métodos, construtores e comportamento. Para saber mais acesse: LEITURA RECOMENDADA Material indicado no início do tópico, como origem do texto disponibilizado; Fóruns na Internet EXERCÍCIOS 1. O objetivo dos exercícios a seguir é fixar o conceito de classes e objetos, métodos e atributos. Dada a estrutura de uma classe, basta traduzí-la para a linguagem Java e fazer uso de um objeto da mesma em um programa simples. a) Programa 1 b) Programa 2 Classe: Pessoa Atributos: nome, idade. Método: void fazeraniversario() Crie uma pessoa, coloque seu nome e idade iniciais, faça alguns aniversários (aumentando a idade) e imprima seu nome e sua idade. Classe: Porta Atributos: aberta, cor, dimensaox, dimensaoy, dimensaoz
21 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 90 3) Programa 3 Métodos: void abrir(), void fechar(), void pintar(string s), boolean checarestaaberta() Crie uma porta, abra e feche a mesma, pinte-a de diversas cores, altere suas dimensões e use o método ChecarEstaAberta() para verificar se ela está aberta. Classe: Casa Atributos: cor, porta1, porta2, porta3 Método: void pintar(string s), int verficarportasestaoabertas() Crie uma casa e pinte-a. Crie três portas e coloque-as na casa; abra e feche as mesmas como desejar. Utilize o método verificarportasestaoabertas() para imprimir o número de portas abertas. 2. Um método pode chamar ele mesmo. Chamamos isso de recursão. Você pode resolver a série de fibonacci usando um método que chama ele mesmo. O objetivo é você criar uma classe, que possa ser usada da seguinte maneira: Fibonacci fibo = new Fibonacci(); int i = fibo.calcularfibonacci(5); System.out.println(i); Aqui imprimirá 8, já que este é o sexto número da série. Este método calcularfibonacci() não pode ter nenhum laço, só pode chamar ele mesmo como método. Pense nele como uma função, que usa a própria função para calcular o resultado. a) Por que o modo acima é extremamente mais lento para calcular a série do que o modo iterativo (que se usa um laço)? b) Escreva o método recursivo novamente, usando apenas uma linha. Para isso, pesquise sobre o operador condicional ternário. 3. O modelo de funcionários a seguir será utilizado para os exercícios de alguns dos capítulos posteriores. O objetivo aqui é criar um sistema para gerenciar os funcionários do Banco. a) Modele um funcionário. Ele deve ter o nome do funcionário, o departamento onde trabalha, seu salário (double), a data de entrada no banco (String), seu RG (String) e um valor booleano que indique se o funcionário está na empresa no momento ou se já foi embora. Você deve criar alguns métodos de acordo com sua necessidade. Além deles, crie um método bonificar() que aumenta o salário do funcionário de acordo com o parâmetro passado como argumento. Crie, também, um método demitir(), que não recebe parâmetro algum, só modifica o valor booleano indicando que o funcionário não trabalha mais aqui. A idéia aqui é apenas modelar, isto é, só identifique que informações são importantes e o que um funcionário faz. Desenhe no papel tudo o que um Funcionario tem e tudo que ele faz. b) Transforme o modelo acima em uma classe Java. Teste-a, usando uma outra classe que tenha o main(). Você deve criar a classe do funcionário chamada Funcionario, e a classe de teste você pode nomear como quiser. A de teste deve possuir o método main().
22 Conteúdo: Programação Orientada a Objetos Linguagem JAVA Página: 91 Incremente essa classe. Faça outros testes, imprima outros atributos e invoque os métodos que você criou a mais. Lembre-se de seguir a convenção Java, isso é importantíssimo. Isto é, nomedeatributo, nomedemetodo, nomedevariavel, NomeDeClasse, etc... c) Crie um método mostrar(), que não recebe nem devolve parâmetro algum e simplesmente imprime todos os atributos do nosso funcionário. Dessa maneira, você não precisa ficar copiando e colando um monte de System.out.println() para cada mudança e teste que fizer com cada um de seus funcionários, você simplesmente vai fazer: Funcionario f1 = new Funcionario(); //brincadeiras com f1... f1.mostrar(); d) Construa dois funcionários com o new e compare-os com o ==. E se eles tiverem os mesmos atributos? e) Crie duas referências para o mesmo funcionário, compare-os com o ==. Tire suas conclusões. f) Em vez de utilizar uma String para representar a data, crie uma outra classe, chamada Data. Ela possui 3 campos int, para dia, mês e ano. Faça com que seu funcionário passe a usá-la. (é parecido com o último exemplo, em que a Conta passou a ter referência para um Cliente). Modifique sua classe TestaFuncionario para que você crie uma Data e atribua ela ao Funcionário. Modifique seu método mostrar() para que ele imprima o valor de datadeentrada daquele Funcionário. Agora, o que acontece se chamarmos o método mostrar() antes de atribuirmos uma data para este Funcionario? g) Garanta que qualquer atributo que precisar ser manipulado em suas classes estará sendo feito através dos métodos get() / set() quando não forem atributos da própria classe, mas uma variável.
Orientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisINSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA:
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TECNICO EM INFORMATICA DISCIPLINA: PROGRAMAÇÃO ORIENTADA A OBJETOS PROFESSOR: REINALDO GOMES ASSUNTO: REVISÃO DA INTRODUÇÃO A ORIENTAÇÃO
Leia maisIntrodução a Java. Hélder Nunes
Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais
Leia maisDesenvolvimento OO com Java Orientação a objetos básica
Desenvolvimento OO com Java Orientação a objetos básica Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal
Leia maisARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto
Leia maisDEFINIÇÃO DE MÉTODOS
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 2 DEFINIÇÃO DE MÉTODOS Todo o processamento que um programa Java faz está definido dentro dos
Leia maisATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS
ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o
Leia maisRoteiro do Programa e Entrada/Saída
Roteiro do Programa e Entrada/Saída c Professores de ALPRO I Faculdade de Informática PUCRS 03/2012 ALPRO I (FACIN) Roteiro do Programa e E/S 03/2012 1 / 32 Sumário 1 Relembrando 2 Programa Definição de
Leia mais2 Orientação a objetos na prática
2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor
Leia maisImplementando uma Classe e Criando Objetos a partir dela
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe
Leia maisCONVENÇÃO DE CÓDIGO JAVA
CONVENÇÃO DE CÓDIGO JAVA Eligiane Ceron - Abril de 2012 Versão 1.0 Conteúdo Considerações iniciais... 2 Introdução... 2 Extensão de arquivos... 2 Arquivos de código Java... 2 Comentários iniciais... 2
Leia mais3 Classes e instanciação de objectos (em Java)
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
Leia maisCURSO DE PROGRAMAÇÃO EM JAVA
CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro
Leia maisUnidade IV: Ponteiros, Referências e Arrays
Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática
Leia maisProgramação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo
Leia maisPara criar uma animação precisamos de uma imagem e que ela contenha alguns frames. O número de frames é uma escolha sua.
7 Animação Animações é um dos quesitos muito importantes em jogos, você não acha? Para isso o JPlay tem uma classe específica para lidar com animações. Essa classe se chama Animation. Bem sugestivo o nome
Leia maisEngenharia de Software III
Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,
Leia maisUNIVERSIDADE FEDERAL DO PARANÁ
CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 05 APRESENTAÇÃO: Nesta aula vamos ver como se faz a criação de Métodos
Leia maisNoções sobre Objetos e Classes
Noções sobre Objetos e Classes Prof. Marcelo Cohen 1. Elementos de programação Revisão de programação variáveis, tipos de dados expressões e operadores cadeias de caracteres escopo de variáveis Revisão
Leia maisOrientação a Objetos
Orientação a Objetos 1. Sobrecarga (Overloading) Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos.
Leia maisFBV - Linguagem de Programação II. Um pouco sobre Java
FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base
Leia maisPROGRAMANDO EM C# ORIENTADO A OBJETOS
PROGRAMANDO EM C# ORIENTADO A OBJETOS AGENDA MÓDULO 2 Domínio e Aplicação Objetos, Atributos e Métodos Classes em C# Criando Objetos em C# Referências em C# Manipulando Atributos Valores Padrão Exercícios
Leia maisEXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS
Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor
Leia maisUnidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01
Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01 Objetivos: Modelar um sistema orientado a objetos simples a partir
Leia maisLógica de Programação
Lógica de Programação Unidade 20 ArrayList: Operações de Busca Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 TIPOS DE BUSCAS... 3 BUSCA ESPECÍFICA... 3 BUSCA ABRANGENTE... 3 PROCEDIMENTO DE BUSCA...
Leia maisArmazenamento de Dados. Prof. Antonio Almeida de Barros Junior
Armazenamento de Dados Prof. Antonio Almeida de Barros Junior 1 Armazenamento de Dados Todos os dados que utilizamos até o momento, ficavam armazenados apenas na memória. Ao final da execução dos programas,
Leia mais2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}
2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II Exercício : Construtores são métodos especiais sem tipo de retorno (nem mesmo void) e de mesmo nome que a classe que são invocados quando da criação
Leia maisBacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java
Linguagem Java Objetivos Compreender como desenvolver algoritmos básicos em JAVA Aprender como escrever programas na Linguagem JAVA baseando-se na Linguagem Portugol aprender as sintaxes equivalentes entre
Leia maisJSP - ORIENTADO A OBJETOS
JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...
Leia maisNetBeans. Conhecendo um pouco da IDE
NetBeans Conhecendo um pouco da IDE Professor: Edwar Saliba Júnior Sumário Apresentação:...1 Criando Um Novo Projeto de Software:...1 Depurando Um Código-fonte:...4 Entendendo o Código-fonte:...7 Dica
Leia maisProgramação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus
Programação Orientada a Objetos: Lista de exercícios #1 Bruno Góis Mateus 1 Contents Programação Orientada a Objetos (Bruno Góis Mateus ): Lista de exercícios #1 Classes e Instanciação 3 A classe Circle...............................................
Leia maisOrientação a Objetos com Java
Orientação a Objetos com Java Julio Cesar Nardi julionardi@yahoo.com.br 2011/2 Apresentação 3: Orientação Objetos: Conceitos Básicos Objetivos: Compreender os Conceitos Básicos da Orientação a Objetos;
Leia maisCriando um script simples
Criando um script simples As ferramentas de script Diferente de muitas linguagens de programação, você não precisará de quaisquer softwares especiais para criar scripts de JavaScript. A primeira coisa
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem
Leia maisResolução da lista de exercícios de casos de uso
Resolução da lista de exercícios de casos de uso 1. Explique quando são criados e utilizados os diagramas de casos de uso no processo de desenvolvimento incremental e iterativo. Na fase de concepção se
Leia maisSUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2
SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2
Leia maisJava 2 Standard Edition Como criar classes e objetos
Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da
Leia maisProjeto de Software Orientado a Objeto
Projeto de Software Orientado a Objeto Ciclo de Vida de Produto de Software (PLC) Analisando um problema e modelando uma solução Prof. Gilberto B. Oliveira Estágios do Ciclo de Vida de Produto de Software
Leia maisLinguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em
Leia maisAlgoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões
Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal
Leia maisEntendendo como funciona o NAT
Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços
Leia maisPrototype, um Design Patterns de Criação
Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe
Leia mais2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10
1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...
Leia maisUniversidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática
Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]
Leia maisGUIA BÁSICO DA SALA VIRTUAL
Ambiente Virtual de Aprendizagem - MOODLE GUIA BÁSICO DA SALA VIRTUAL http://salavirtual.faculdadesaoluiz.edu.br SUMÁRIO 1. Acessando Turmas 4 2. Inserindo Material 4 3. Enviando Mensagem aos Alunos 6
Leia maisGuia de Fatores de Qualidade de OO e Java
Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.
Leia maisNOVIDADES DO JAVA PARA PROGRAMADORES C
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples
Leia maisLP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br
LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de
Leia maisPara desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.
1 - Criando uma classe em Java Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans. Antes de criarmos a(s) classe(s) é necessário criar o projeto
Leia maisReuso com Herança a e Composiçã
Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:
Leia maispublic Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.
import java.util.scanner; class Data... class Compromisso... public class Agenda private Compromisso[] compromissos; private Compromisso[] realoquecompromissos (Compromisso[] vetor, int tamanhodesejado)
Leia maisAPOSTILA 2015 TÉCNICAS DE PROGRAMAÇÃO PROFESSOR: ALEXANDRE. Técnicas de Programação 2º PD 2015 1
APOSTILA 2015 TÉCNICAS DE PROGRAMAÇÃO PROFESSOR: ALEXANDRE Técnicas de Programação 2º PD 2015 1 1. Como Aprender Java 1.1 - O que é realmente importante? Muitos livros, ao passar dos capítulos, mencionam
Leia maisCRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO
CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO Antes de criarmos um novo Banco de Dados quero fazer um pequeno parênteses sobre segurança. Você deve ter notado que sempre
Leia maisExercícios de Revisão Java Básico
Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1
Leia maisCAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:
Leia maisINF1013 MODELAGEM DE SOFTWARE
INF1013 MODELAGEM DE SOFTWARE Departamento de Informática Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 18 Sockets OLadoServidor O Lado Cliente Múltiplos Clientes 1 Programa Capítulo 18 Sockets
Leia maisBC0501 Linguagens de Programação
BC0501 Linguagens de Programação Aula Prática: 03 Assunto: Comandos de Seleção 1. Introdução Um comando de seleção define uma condição em um programa, que permite que grupos de comandos sejam executados
Leia maisPrática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva
1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade
Leia mais2 echo "PHP e outros.";
PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento
Leia maisRelacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos
Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos
Leia mais5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES
CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:
Leia maisPARANÁ GOVERNO DO ESTADO
A COMUNICAÇÃO NA INTERNET PROTOCOLO TCP/IP Para tentar facilitar o entendimento de como se dá a comunicação na Internet, vamos começar contando uma história para fazer uma analogia. Era uma vez, um estrangeiro
Leia maisProgramação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP
Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente
Leia maisMANUAL DO ANIMAIL 1.0.0.1142 Terti Software
O Animail é um software para criar campanhas de envio de email (email Marketing). Você pode criar diversas campanhas para públicos diferenciados. Tela Principal do sistema Para melhor apresentar o sistema,
Leia maisAlgoritmos e Programação Estruturada
Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.
Leia maisEspecificação do 3º Trabalho
Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,
Leia maisALGORITMOS PARTE 01. Fabricio de Sousa Pinto
ALGORITMOS PARTE 01 Fabricio de Sousa Pinto Algoritmos: Definição 2 É uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. Algoritmos 3
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisCurso de Programação Computadores
3 O Primeiro Programa em C Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 3 O Primeiro Programa em C 3.1 - Introdução Depois dos conceitos
Leia maisResumo da Matéria de Linguagem de Programação. Linguagem C
Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:
Leia maisAlgoritmos em Javascript
Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisAnálise e Projeto de Sistemas
Análise e Projeto de Sistemas Rafael Vargas Mesquita http://www.ci.ifes.edu.br ftp://ftp.ci.ifes.edu.br/informatica/mesquita/ Herança O que é herança? Herdar é derivar características de gerações precedentes.
Leia mais1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?
Exercícios sobre Linguagem PHP: 1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela? 2) Considere a linguagem de programação PHP e seus operadores. A execução da sentença:
Leia maisDesenvolvendo Websites com PHP
Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.
Leia maisGUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM
GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM ÍNDICE ITEM Página 1. Objetivo... 3 2. Requisitos... 3 3. Diretório do Millennium... 3 4. Procedimento para Transferência de Servidor... 3 4.1 Compartilhamento
Leia maisPersistência de Dados
Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Introdução Esse não é um curso de Java! O objetivo é aprender os conceitos da programação orientada a objetos,
Leia maisEstrutura de Dados Básica
Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 7: Recursividade O objetivo desta aula é apresentar o conceito de recursão para solução de problemas. A recursão é uma técnica de programação
Leia maisManual do Ambiente Moodle para Professores
UNIVERSIDADE FEDERAL DA FRONTEIRA SUL Manual do Ambiente Moodle para Professores Tarefas Versão 1.0b Setembro/2011 Direitos Autorais: Essa apostila está licenciada sob uma Licença Creative Commons 3.0
Leia maisDadas a base e a altura de um triangulo, determinar sua área.
Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares
Leia maisCapítulo 13. Encapsulamento. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
Capítulo 13 Encapsulamento Objetivos do Capítulo Indicar a importância do mecanismo de encapsulamento no contexto do desenvolvimento de software utilizando a programação orientada a objetos. Apresentar
Leia maisAnálise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem
Leia maisCriar a classe Aula.java com o seguinte código: Compilar e Executar
Introdução à Java Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Código Exemplo da Aula Criar a classe Aula.java com o seguinte código: public class Aula { public static void
Leia maisAula 30 - Sockets em Java
Aula 30 - Sockets em Java Sockets Sockets são estruturas que permitem que funções de software se interconectem. O conceito é o mesmo de um soquete (elétrico, telefônico, etc...), que serve para interconectar
Leia maisINTRODUÇÃO AO JAVA PARA PROGRAMADORES C
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB INTRODUÇÃO AO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar a grande semelhança entre Java e C Apresentar a organização diferenciada
Leia maisProcedimentos para Reinstalação do Sisloc
Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...
Leia maisOCOMON PRIMEIROS PASSOS
OCOMON PRIMEIROS PASSOS O OCOMON ainda não possui um arquivo de Help para atender a todas questões relacionadas ao sistema. Esse arquivo serve apenas para dar as principais instruções para que você tenha
Leia maisNa Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:
Tutorial de TCP/IP - Parte 6 - Tabelas de Roteamento Por Júlio Cesar Fabris Battisti Introdução Esta é a sexta parte do Tutorial de TCP/IP. Na Parte 1 tratei dos aspectos básicos do protocolo TCP/IP. Na
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-3 Criando Classes em Java Prof. Esbel Tomás Valero Orellana Da Aula Anterior Classes em Java, sintaxe básica Tipos básicos de dados em Java, como escolher o tipo apropriado
Leia maisGoogle Drive. Passos. Configurando o Google Drive
Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.
Leia maisBem- Vindo ao manual de instruções do ECO Editor de COnteúdo.
Manual de Instruções ECO Editor de Conteúdo Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. O ECO é um sistema amigável e intui?vo, mas abaixo você pode?rar eventuais dúvidas e aproveitar
Leia maisCurso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA. Mostrar como funciona a programação orientada a objetos
META Curso: Desenvolvendo Jogos 2d Com C# E Microsoft XNA Conteudista: André Luiz Brazil Aula 3: CRIANDO A CLASSE ESPAÇONAVE Mostrar como funciona a programação orientada a objetos OBJETIVOS Ao final da
Leia mais02 - Usando o SiteMaster - Informações importantes
01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,
Leia maisTécnicas de Programação II
Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.
Leia maisBSI UFRPE Prof. Gustavo Callou gcallou@gmail.com
BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com HelloWorld.java: public class HelloWorld { public static void main (String[] args) { System.out.println( Hello, World ); } } Identificadores são usados
Leia maisGUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM
GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM ÍNDICE ITEM Página 1. Objetivo... 3 2. Requisitos... 3 3. Diretório do Slim... 3 4. Procedimento para Transferência de Servidor... 3 4.1 Compartilhamento da
Leia mais