1) O documento discute conceitos de encapsulamento, como manter variáveis privadas e usar métodos de acesso públicos.
2) Aborda polimorfismo, quando o casting é necessário e erros relacionados a tempo de compilação x execução.
3) Explica sobrecarga, sobrescrita, regras e exemplos.
Slide utilizado no curso preparatório para a certificação OCAJP7. Nessa aula fizemos uma Revisão de Classes e arquivos .java http://www.sitedoph.com.br/preparatorio-para-a-certificacao-java-ocajp-7-aula-1/
O documento apresenta um código Java que calcula quantos números entre 1 e 100 são múltiplos de 3 ou 5 utilizando um loop for e uma condição if. O resultado é impresso no final.
O documento apresenta conceitos básicos da linguagem Java, incluindo estrutura de código, classes, objetos, arrays, estruturas de controle e exercícios para praticar os tópicos abordados.
O documento discute herança e polimorfismo em Java. A herança permite que subclasses incorporem estrutura e comportamento de superclasses, permitindo a reutilização de código. O polimorfismo permite que subclasses sobrescrevam métodos de superclasses com comportamentos diferentes.
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
O documento discute os conceitos de herança, polimorfismo e classes abstratas em orientação a objetos. A herança permite que classes herdem atributos e comportamentos de outras classes, evitando repetição de código. O polimorfismo acontece quando métodos são sobrescritos em subclasses, permitindo tratá-las de forma genérica. Classes abstratas definem interfaces comuns para subclasses concretas, podendo conter métodos abstratos para implementação nas mesmas.
Curso java 06 - mais construtores, interfaces e polimorfismoMaurício Linhares
O documento discute herança e interfaces em Java. Ele explica que construtores não são herdados, mas precisam chamar o construtor da superclasse. Também apresenta como implementar interfaces para permitir que classes herdem comportamentos sem herança múltipla, resolvendo problemas como o "diamante da morte".
O documento apresenta um exemplo de uso de interfaces e herança em Java. Define uma interface Domesticavel para representar animais que podem ser domesticados. Em seguida, define classes Gato, Cachorro e Papagaio que herdam de Mamifero e Ave e implementam a interface Domesticavel. Finalmente, um método domesticar é chamado para cada instância dessas classes.
O documento descreve conceitos básicos da linguagem de programação Ruby, incluindo:
1) Sua origem no Japão e influências de outras linguagens como Smalltalk e Perl.
2) Conceitos como orientação a objetos, dinamismo, blocos de código e falta de tipagem.
3) Ferramentas como RVM para gerenciar versões do Ruby e Rubygems para gerenciar pacotes.
Slide utilizado no curso preparatório para a certificação OCAJP7. Nessa aula fizemos uma Revisão de Classes e arquivos .java http://www.sitedoph.com.br/preparatorio-para-a-certificacao-java-ocajp-7-aula-1/
O documento apresenta um código Java que calcula quantos números entre 1 e 100 são múltiplos de 3 ou 5 utilizando um loop for e uma condição if. O resultado é impresso no final.
O documento apresenta conceitos básicos da linguagem Java, incluindo estrutura de código, classes, objetos, arrays, estruturas de controle e exercícios para praticar os tópicos abordados.
O documento discute herança e polimorfismo em Java. A herança permite que subclasses incorporem estrutura e comportamento de superclasses, permitindo a reutilização de código. O polimorfismo permite que subclasses sobrescrevam métodos de superclasses com comportamentos diferentes.
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
O documento discute os conceitos de herança, polimorfismo e classes abstratas em orientação a objetos. A herança permite que classes herdem atributos e comportamentos de outras classes, evitando repetição de código. O polimorfismo acontece quando métodos são sobrescritos em subclasses, permitindo tratá-las de forma genérica. Classes abstratas definem interfaces comuns para subclasses concretas, podendo conter métodos abstratos para implementação nas mesmas.
Curso java 06 - mais construtores, interfaces e polimorfismoMaurício Linhares
O documento discute herança e interfaces em Java. Ele explica que construtores não são herdados, mas precisam chamar o construtor da superclasse. Também apresenta como implementar interfaces para permitir que classes herdem comportamentos sem herança múltipla, resolvendo problemas como o "diamante da morte".
O documento apresenta um exemplo de uso de interfaces e herança em Java. Define uma interface Domesticavel para representar animais que podem ser domesticados. Em seguida, define classes Gato, Cachorro e Papagaio que herdam de Mamifero e Ave e implementam a interface Domesticavel. Finalmente, um método domesticar é chamado para cada instância dessas classes.
O documento descreve conceitos básicos da linguagem de programação Ruby, incluindo:
1) Sua origem no Japão e influências de outras linguagens como Smalltalk e Perl.
2) Conceitos como orientação a objetos, dinamismo, blocos de código e falta de tipagem.
3) Ferramentas como RVM para gerenciar versões do Ruby e Rubygems para gerenciar pacotes.
O documento descreve o modelo OSI de 7 camadas para redes de computadores. Explica que cada camada implementa funções específicas como encapsulamento, roteamento, controle de fluxo e apresentação de dados. Também define as sete camadas do modelo OSI e suas respectivas funções, incluindo a camada física, de enlace, rede, transporte, sessão, apresentação e aplicação.
O documento discute os principais conceitos da programação orientada a objetos em C# como encapsulamento, herança, polimorfismo, construtores, interfaces, classes abstratas, métodos abstratos, coleções, enumerações, generics, filas, pilhas e exceções.
O documento descreve o Modelo OSI, que divide as funções de comunicação em sete camadas hierárquicas. Cada camada possui um protocolo e realiza tarefas específicas relacionadas à comunicação entre sistemas, como a camada física que transmite bits e a camada de rede que lida com roteamento de pacotes. O encapsulamento e desencapsulamento de dados ocorre conforme as camadas são atravessadas.
O documento discute encapsulamento em programação orientada a objetos. Explica que encapsulamento protege dados privados através de métodos públicos, permitindo acesso seguro às propriedades de uma classe. Detalha como definir atributos como privados e usar métodos get e set para acessá-los de forma segura em outras classes, ilustrando com exemplos de classes.
O documento descreve o conceito de encapsulamento em programação orientada a objetos. Resume-se:
1) Encapsulamento separa a interface de um objeto de seus detalhes internos, permitindo alterações sem afetar o uso.
2) Métodos de acesso e modificadores permitem acessar atributos de forma controlada, mantendo detalhes privados.
3) Isso promove independência entre objetos, facilita manutenção e reutilização.
O documento discute os bancos de dados orientados a objetos (BDOO), que oferecem maior flexibilidade na criação e manipulação de tipos de dados complexos requeridos por aplicações avançadas. Os BDOOs armazenam objetos persistentes que podem ser compartilhados entre programas, preservando sua integridade através de identificadores únicos. Eles também suportam características como herança e polimorfismo que permitem a reutilização e especialização de objetos.
O documento discute as dificuldades de persistir informações de softwares orientados a objetos no modelo relacional e apresenta o banco de dados orientado a objetos como uma solução. O modelo relacional não armazena as informações da maneira como são trabalhadas no desenvolvimento do software. O banco de dados orientado a objetos permite que as informações sejam persistidas em seu estado real, eliminando o hiato semântico entre a aplicação e o armazenamento.
O documento discute os conceitos de encapsulamento e modificadores de acesso em programação orientada a objetos. Resume que encapsulamento separa os aspectos internos e externos de um objeto, mantendo detalhes internos privados. Também explica os modificadores de acesso public, private, protected e padrão e como eles controlam o acesso a atributos, métodos e classes.
O documento discute tipos abstratos de dados (TAD) e encapsulamento. Ele introduz os conceitos de abstração e TAD definidos pelo usuário, apresentando exemplos. Também aborda questões de projeto de TADs e exemplos de como linguagens como Ada, C++, Java e Ruby implementam encapsulamento e TADs.
O documento discute Git e GitHub, ferramentas de controle de versão. Explica que Git permite backup e controle de versão de código e lista alguns comandos básicos. Também descreve GitHub como uma plataforma de hospedagem para compartilhamento e contribuição em projetos open source.
Este documento resume os principais conceitos da linguagem Java, incluindo objetos, classes, herança, pacotes e modificadores de acesso. Ele também explica operadores aritméticos, relacionais e lógicos em Java.
O documento descreve princípios de projeto de software como SRP, OCP, LSP, ISP e DIP. Também apresenta padrões de projeto como Strategy e State. Strategy separa algoritmos em classes distintas para permitir troca de comportamento em tempo de execução. State permite que um objeto altere seu comportamento com base em seu estado interno.
1) O documento descreve os principais recursos do PowerShell, incluindo a execução de comandos, criação de funções e scripts, uso de parâmetros e variáveis.
2) É possível criar variáveis de diferentes tipos e escopos, além de variáveis de ambiente.
3) O PowerShell suporta estruturas condicionais como if/else e switch para tomar decisões durante a execução.
O documento fornece instruções sobre Java, incluindo como chamar classes .class em HTML, criar applets, usar arrays, condicionais, subclasses, this, passar argumentos, polimorfismo, construtores, destrutores e threads. Também lista tópicos para pesquisa como gráficos e cadastro de funcionários.
Sistemas Distribuídos - Aula 04 - Revisão de JavaArthur Emanuel
Este documento apresenta os principais conceitos da linguagem Java, incluindo classes, objetos, atributos, métodos, encapsulamento, herança, polimorfismo e fluxos de controle. Também discute o uso de arrays, tratamento de erros e métodos estáticos. Por fim, fornece exemplos de exercícios para aplicar os conceitos aprendidos.
O documento resume os principais conceitos de programação orientada a objetos em PHP, incluindo a estrutura básica de classes, atributos, métodos, construtores, instanciação de objetos, herança, interfaces, classes abstratas e exemplos de aplicação destes conceitos.
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
O documento discute testes de unidade no PHP usando o framework PHPUnit. Aborda tópicos como: introdução ao PHPUnit; como escrever e executar testes unitários; utilização de asserções e provedores de dados; verificação de exceções.
Este documento discute conceitos de herança em programação orientada a objetos em Java. Explica que herança permite que classes "filhas" herdem atributos e métodos de classes "pais". Também aborda sobreescrita de métodos, construtores, modificadores de acesso e exemplos práticos de implementação de herança.
O documento apresenta os conceitos de Injeção de Dependências, Fabricação de Objetos e Inversão de Controle. Estes padrões de desenvolvimento visam reduzir o acoplamento entre classes e facilitar a manutenção do código, permitindo que as dependências sejam definidas por configuração e injetadas através de fábricas.
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
Fundamentos da Programação 13:
• Polimorfismo de subtipos
• Análise, desenho e implementação
Apresentação 13 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
O documento descreve o modelo OSI de 7 camadas para redes de computadores. Explica que cada camada implementa funções específicas como encapsulamento, roteamento, controle de fluxo e apresentação de dados. Também define as sete camadas do modelo OSI e suas respectivas funções, incluindo a camada física, de enlace, rede, transporte, sessão, apresentação e aplicação.
O documento discute os principais conceitos da programação orientada a objetos em C# como encapsulamento, herança, polimorfismo, construtores, interfaces, classes abstratas, métodos abstratos, coleções, enumerações, generics, filas, pilhas e exceções.
O documento descreve o Modelo OSI, que divide as funções de comunicação em sete camadas hierárquicas. Cada camada possui um protocolo e realiza tarefas específicas relacionadas à comunicação entre sistemas, como a camada física que transmite bits e a camada de rede que lida com roteamento de pacotes. O encapsulamento e desencapsulamento de dados ocorre conforme as camadas são atravessadas.
O documento discute encapsulamento em programação orientada a objetos. Explica que encapsulamento protege dados privados através de métodos públicos, permitindo acesso seguro às propriedades de uma classe. Detalha como definir atributos como privados e usar métodos get e set para acessá-los de forma segura em outras classes, ilustrando com exemplos de classes.
O documento descreve o conceito de encapsulamento em programação orientada a objetos. Resume-se:
1) Encapsulamento separa a interface de um objeto de seus detalhes internos, permitindo alterações sem afetar o uso.
2) Métodos de acesso e modificadores permitem acessar atributos de forma controlada, mantendo detalhes privados.
3) Isso promove independência entre objetos, facilita manutenção e reutilização.
O documento discute os bancos de dados orientados a objetos (BDOO), que oferecem maior flexibilidade na criação e manipulação de tipos de dados complexos requeridos por aplicações avançadas. Os BDOOs armazenam objetos persistentes que podem ser compartilhados entre programas, preservando sua integridade através de identificadores únicos. Eles também suportam características como herança e polimorfismo que permitem a reutilização e especialização de objetos.
O documento discute as dificuldades de persistir informações de softwares orientados a objetos no modelo relacional e apresenta o banco de dados orientado a objetos como uma solução. O modelo relacional não armazena as informações da maneira como são trabalhadas no desenvolvimento do software. O banco de dados orientado a objetos permite que as informações sejam persistidas em seu estado real, eliminando o hiato semântico entre a aplicação e o armazenamento.
O documento discute os conceitos de encapsulamento e modificadores de acesso em programação orientada a objetos. Resume que encapsulamento separa os aspectos internos e externos de um objeto, mantendo detalhes internos privados. Também explica os modificadores de acesso public, private, protected e padrão e como eles controlam o acesso a atributos, métodos e classes.
O documento discute tipos abstratos de dados (TAD) e encapsulamento. Ele introduz os conceitos de abstração e TAD definidos pelo usuário, apresentando exemplos. Também aborda questões de projeto de TADs e exemplos de como linguagens como Ada, C++, Java e Ruby implementam encapsulamento e TADs.
O documento discute Git e GitHub, ferramentas de controle de versão. Explica que Git permite backup e controle de versão de código e lista alguns comandos básicos. Também descreve GitHub como uma plataforma de hospedagem para compartilhamento e contribuição em projetos open source.
Este documento resume os principais conceitos da linguagem Java, incluindo objetos, classes, herança, pacotes e modificadores de acesso. Ele também explica operadores aritméticos, relacionais e lógicos em Java.
O documento descreve princípios de projeto de software como SRP, OCP, LSP, ISP e DIP. Também apresenta padrões de projeto como Strategy e State. Strategy separa algoritmos em classes distintas para permitir troca de comportamento em tempo de execução. State permite que um objeto altere seu comportamento com base em seu estado interno.
1) O documento descreve os principais recursos do PowerShell, incluindo a execução de comandos, criação de funções e scripts, uso de parâmetros e variáveis.
2) É possível criar variáveis de diferentes tipos e escopos, além de variáveis de ambiente.
3) O PowerShell suporta estruturas condicionais como if/else e switch para tomar decisões durante a execução.
O documento fornece instruções sobre Java, incluindo como chamar classes .class em HTML, criar applets, usar arrays, condicionais, subclasses, this, passar argumentos, polimorfismo, construtores, destrutores e threads. Também lista tópicos para pesquisa como gráficos e cadastro de funcionários.
Sistemas Distribuídos - Aula 04 - Revisão de JavaArthur Emanuel
Este documento apresenta os principais conceitos da linguagem Java, incluindo classes, objetos, atributos, métodos, encapsulamento, herança, polimorfismo e fluxos de controle. Também discute o uso de arrays, tratamento de erros e métodos estáticos. Por fim, fornece exemplos de exercícios para aplicar os conceitos aprendidos.
O documento resume os principais conceitos de programação orientada a objetos em PHP, incluindo a estrutura básica de classes, atributos, métodos, construtores, instanciação de objetos, herança, interfaces, classes abstratas e exemplos de aplicação destes conceitos.
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
O documento discute testes de unidade no PHP usando o framework PHPUnit. Aborda tópicos como: introdução ao PHPUnit; como escrever e executar testes unitários; utilização de asserções e provedores de dados; verificação de exceções.
Este documento discute conceitos de herança em programação orientada a objetos em Java. Explica que herança permite que classes "filhas" herdem atributos e métodos de classes "pais". Também aborda sobreescrita de métodos, construtores, modificadores de acesso e exemplos práticos de implementação de herança.
O documento apresenta os conceitos de Injeção de Dependências, Fabricação de Objetos e Inversão de Controle. Estes padrões de desenvolvimento visam reduzir o acoplamento entre classes e facilitar a manutenção do código, permitindo que as dependências sejam definidas por configuração e injetadas através de fábricas.
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
Fundamentos da Programação 13:
• Polimorfismo de subtipos
• Análise, desenho e implementação
Apresentação 13 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.
1) O curso aborda tópicos de programação Java como introdução à linguagem, uso de formulários, manipulação de arquivos e banco de dados.
2) Apresenta conceitos de programação orientada a objetos em Java incluindo classes, atributos, métodos, encapsulamento e herança.
3) Demonstra o uso de variáveis, vetores, condições, laços e métodos em programação Java.
O documento discute encapsulamento, métodos get e set, e fornece exemplos de sua definição e uso. O encapsulamento separa o programa em partes isoladas para torná-lo mais flexível e fácil de modificar. Métodos get retornam valores de atributos privados e métodos set modificam esses atributos, permitindo o acesso controlado. Exemplos ilustram como definir esses métodos em uma classe Cachorro.
O documento discute conceitos de programação orientada a objetos em PHP, incluindo classes, objetos, herança, métodos, construtores, destrutores, visibilidade, operador de resolução de escopo, inicializações, membros de classe, constantes, classes abstratas, interfaces, métodos finais e clonagem de objetos.
Este documento discute conceitos de programação orientada a objetos em Java, incluindo:
1) Como adicionar comentários de uma ou mais linhas no código Java
2) Operadores relacionais e lógicos como ==, >, && e ||
3) Conceitos básicos de classes como atributos, métodos, encapsulamento
UFCG.JCert Reunião 1 - Declarações e Controle de AcessoAnderson Ledo
O documento discute conceitos importantes sobre declaração de classes e interfaces em Java, incluindo: (1) identificadores permitidos e não permitidos em Java, (2) modificadores de acesso como público e privado, e (3) como declarar classes, interfaces e constantes.
1) O documento descreve conceitos e recursos do Spring Framework como loaders de recursos, herança de definições de beans, validações, wrappers, post processors e internacionalização.
2) Inclui exemplos de uso de herança, validações e bean post processors no Spring.
3) Explica como customizar a inicialização de beans através de callbacks como bean post processors e bean factory post processors.
1) O documento apresenta os detalhes de uma aula sobre programação orientada a objetos com Java, incluindo avaliação, conteúdo da prova e agenda.
2) A agenda inclui tópicos como operador ternário, enums, varargs, autoboxing/unboxing, definindo e sobrecarregando construtores e uso do método this.
3) Exemplos de código são fornecidos para ilustrar esses tópicos.
O documento discute a Java Persistence API (JPA), que é uma especificação para mapeamento objeto-relacional. Ele explica que para criar uma entidade é necessário usar as anotações @Entity e @Id, e que @Id é usado para identificar unicamente uma entidade.
O documento apresenta Diénert de Alencar Vieira e seu histórico profissional, além de um roteiro sobre sistemas web e tecnologias como JSP, Servlets, Facelets, JSF, JBoss Seam, RichFaces e padrões de projeto.
1) O documento descreve as etapas para desenvolver uma aplicação web usando JSF e RichFaces, incluindo configuração do projeto, criação de templates, beans gerenciados e componentes de interface.
2) É explicado como implementar navegação baseada em estados usando beans gerenciados e tags JSF para exibir diferentes partes da aplicação.
3) Detalhes técnicos como configuração no web.xml, criação de utilitários, templates e componentes de menu são apresentados.
O documento discute as opções para desenvolvedores de aplicativos móveis, incluindo as principais plataformas (JavaME, Flash Lite, Android), lojas de aplicativos, e estratégias de distribuição, promoção, análise e monetização. Resume também a história e o futuro do JavaME, e enfatiza a importância de não se ater a uma única plataforma ou tecnologia.
O documento apresenta uma introdução ao JavaFX, discutindo suas principais funcionalidades para desenvolvimento de interfaces gráficas, as novidades da versão 1.2 e dicas para iniciar o uso da plataforma. É destacado o potencial do JavaFX, mas também problemas relacionados à sua distribuição que ainda precisam ser resolvidos.
O documento resume a história da empresa DOMM Assessoria em Informática Ltda, incluindo seus sócios graduados em Ciência da Computação, áreas de especialização em TV digital, processamento de imagens e otimização, e objetivos de abrir seu próprio negócio e estabelecer parcerias. Ele também discute os custos e desafios de manter uma microempresa, bem como oportunidades de incentivo por meio do programa PRIME da FINEP.
O documento apresenta o programa da Sun para integração com universidades, incluindo o programa de Embaixadores, a iniciativa acadêmica SAI e a rede OSUM. O programa de Embaixadores recruta estudantes para divulgar as tecnologias da Sun no meio acadêmico, oferecendo materiais, bolsas e experiência. A SAI fornece treinamentos e certificações online com desconto. A OSUM é uma rede global para discussão sobre open source e eventos com a Sun.
A Redesoft realizou um encontro para discutir sua missão de produzir soluções funcionais, as dificuldades passadas e presentes, os produtos e parcerias atuais, os desafios futuros, as expectativas de mercado e o perfil esperado para profissionais.
O documento discute conceitos básicos sobre coleções no Java. Ele apresenta os objetivos da discussão que são: distinguir cada tipo de coleção, escolher a melhor implementação de coleção para cada uso, conhecer as principais interfaces e implementações de coleção, e entender os conceitos fundamentais de igualdade no Java necessários para trabalhar com coleções.
O documento apresenta informações sobre a empresa Sun Microsystems e sobre programas acadêmicos da Sun, como o SAI (Sun Academic Initiative), OSUM (Open Source University Meetup) e o Programa de Embaixadores. Em 3 frases, o documento discute: 1) A história e as principais linhas de produtos da Sun; 2) Programas da Sun para estudantes e professores universitários, como treinamentos, certificações e comunidades online; 3) Como participar desses programas para aprender sobre tecnologias da Sun e se tornar um Embaixador da Sun.
O documento discute sockets em Java, abordando tópicos como:
1) Definição de sockets e sua representação no sistema operacional;
2) Modelo cliente-servidor e formas de comunicação com e sem conexão;
3) Estados de um socket e primitivas da API de sockets.
Este documento fornece uma visão geral da plataforma Java ME, descrevendo suas principais classes e componentes, como Canvas e GameCanvas, além de exemplos práticos de desenvolvimento de aplicativos móveis e integração com a web.
O documento apresenta a agenda de uma palestra sobre programação concorrente com Java. A parte 1 da agenda inclui introdução, motivação, arquitetura de sistemas, tipos de concorrência, programas e processos e problemas com concorrência. A parte 2 e 3 discutem threads, exclusão mútua e sincronização. A parte 4 aborda introdução a sincronização, semáforos, monitores e o perigo de deadlock.
O documento discute a presença da Sun no meio acadêmico. Ele apresenta a Sun e suas tecnologias, certificações, o programa SAI, a rede OSUM, o programa de embaixadores e eventos realizados na Universidade Federal da Paraíba.
O documento discute o que é software livre, comparando-o com software proprietário e privativo. Ele explica que software livre pode ser usado, copiado, modificado e redistribuído sem restrições, diferentemente do software proprietário. Também discute como projetos como o GNU, Linux e a licença GPL ajudaram a promover o software livre e como desenvolvedores podem ganhar dinheiro e reconhecimento mantendo seu código aberto.
Erisvaldo Gadelha Saraiva Júnior é um tecnólogo e graduando em ciência da computação com experiência em desenvolvimento de aplicações móveis. Seu objetivo é desenvolver aplicações para dispositivos móveis considerando fatores como portabilidade, uso de memória e processamento.
O documento apresenta uma visão geral da plataforma JavaME para desenvolvimento de aplicações móveis, abordando tópicos como perfis CLDC/MIDP, estrutura básica de classes, persistência de dados, emuladores e exemplos práticos de aplicações.
O documento descreve um minicurso sobre desenvolvimento de aplicações para dispositivos móveis utilizando JavaME. O minicurso irá cobrir a plataforma JavaME, produção de aplicativos básicos, confecção de telas, desafios de portabilidade, persistência de dados e exemplos de APIs para câmera, SMS e integração com a Web.
O documento discute o conceito de threads em Java. Uma thread é uma linha de execução dentro de um processo. Um processo pode ter múltiplas threads executando simultaneamente. Threads podem ser criadas extendendo a classe Thread ou implementando a interface Runnable. É necessário iniciar uma thread chamando o método start() para que ela comece a executar.
O documento discute os monitores como uma abordagem para sincronização em programação concorrente. Os monitores fornecem exclusão mútua e sincronização entre processos de forma explícita e centralizada. Eles podem ser implementados como classes em linguagens orientadas a objetos, com variáveis globais, procedimentos de entrada e código de inicialização.
1. Encapsulamento
Objetivo 5.1 – “Criar código que implemente
forte encapsulamento, fraco acoplamento e alta
coesão em classes, e descrever benefícios.”
− Manter variáveis de instância protegidas (com um
modificador de acesso, geralmente private);
− Fazer métodos de acesso public, e force os
códigos utilizadores da classe à usar os métodos
em vez de acessar diretamente as propriedades;
− Usar convenção JavaBeans para acesso:
getPropriedade() e setPropriedade().
2. Encapsulamento
Cuidado com pegadinhas perguntando sobre
comportamento de método, quando o verdadeiro
problema é encapsulamento!
class Foo {
public int left = 9;
public int right = 3;
public void setLeft(int leftNum) {
left = leftNum;
right = leftNum/3;
}
// código adicional aqui
}
3. Encapsulamento
O valor de right sempre vai ser um terço do
valor de left? Parece que sim, até percebermos
que os utilizadores da classe podem acessar as
propriedades diretamente, sem utilizar o
método setLeft()!
4. Polimorfismo e Casting
Objetivo 5.2 - “Dado um cenário, desenvolver
código que demonstre o uso de polimorfismo.
Além disso, determinar quando casting será
necessário e reconhecer erros tempo de
compilação x tempo de execução relacionados
ao casting de referências de objetos.”
Uma referência é uma variável, logo pode ser
reutilizada para apontar vários objetos;
Uma variável de referência é imutável (quando
declarada, sempre será daquele tipo);
5. Polimorfismo e Casting
O tipo de uma variável de referência indica os
métodos que poderão ser invocados no objeto
referenciado;
Uma variável de referência pode referenciar um
objeto do mesmo tipo da referência declarada
ou qualquer subtipo dela;
Uma variável de referência pode ser declarada
como um tipo classe ou interface. Se a variável
for declarada como interface, ela pode
referenciar qualquer objeto de qualquer classe
que implementa a interface.
6. Polimorfismo e Casting
class Animal {
void makeNoise() {System.out.println(quot;generic noisequot;); }
}
class Dog extends Animal {
void makeNoise() {System.out.println(quot;barkquot;); }
void playDead() { System.out.println(quot;roll overquot;); }
}
7. Polimorfismo e Casting
class CastTest2 {
public static void main(String [] args) {
Animal [] a = {new Animal(), new Dog(), new Animal() };
for(Animal animal : a) {
animal.makeNoise();
if(animal instanceof Dog) {
animal.playDead();
}
}
}
}
Erro “Cannot find symbol” - Referência Animal
não conhece método de objeto Dog
8. Polimorfismo e Casting
Com adição de casting, podemos acessar o
método de Dog:
if(animal instanceof Dog) {
Dog d = (Dog) animal;
d.playDead();
}
9. Polimorfismo e Casting
class Animal { }
class Dog extends Animal { }
class DogTest {
public static void main(String [] args) {
Animal animal = new Animal();
Dog d = (Dog) animal;
}
}
Exemplo de downcasting errado – referência da
subclasse não pode referir à um objeto de
superclasse. (java.lang.ClassCastException)
10. Polimorfismo e Casting
Upcasting: pode ser implícito ou não, fica à
cargo do programador adicionar o casting
class Animal { }
class Dog extends Animal { }
class DogTest {
public static void main(String [] args) {
Dog d = new Dog();
Animal a1 = d; // upcasting implícito
Animal a2 = (Animal) d; // upcast explícito
}
}
11. Sobrecarga/Sobrescrita
Objetivo 1.5 - “Dado um código de exemplo,
determinar se um método está corretamente
sobrescrevendo ou sobrecarregando outro
método, e identificar retornos de valores legais
(incluindo retornos covariantes), para o método.
Objetivo 5.4 - “Dado um cenário, desenvolver
código que declare e/ou invoque métodos
sobrescritos ou sobrecarregados, e código que
declara e/ou invoca superclasses
12. Sobrecarga/Sobrescrita
public class Animal {
public void eat() {
System.out.println(quot;Generic Animal Eating Genericallyquot;);
}
}
class Horse extends Animal {
public void eat() {
System.out.println(quot;Horse eating hay, oats, and horse treatsquot;);
}
}
13. Sobrecarga/Sobrescrita
public class TestAnimals {
public static void main (String [] args) {
Animal a = new Animal();
Animal b = new Horse();
a.eat();
b.eat();
}
}
Qual método b.eat() invocará?
14. Sobrecarga/Sobrescrita
class Animal {
public void eat() {
System.out.println(quot;Generic Animal Eating Genericallyquot;);
}
}
class Horse extends Animal {
public void eat() {
System.out.println(quot;Horse eating hay, oats, and horse treatsquot;);
}
public void buck() { }
}
18. Sobrecarga/Sobrescrita
class Animal {
public void eat() throws Exception { ...
}
}
class Dog2 extends Animal {
public void eat() { /* no Exceptions */}
public static void main(String [] args) {
Animal a = new Dog2();
Dog2 d = new Dog2();
d.eat();
a.eat();
}
}
O que ocorrerá na invocação de a.eat()?
19. Sobrecarga/Sobrescrita
Regras para sobrescrita de métodos:
− Argumentos iguais
− Retorno do mesmo tipo ou subtipo
− O nível de acesso não pode ser mais
restritivo
Mas pode ser menos restritivo
− Só podem ser sobrescritos se são herdados
− O método sobrecarregado pode enviar
exceção unchecked (runtime), mesmo que o
da superclasse não envie
20. Sobrecarga/Sobrescrita
Regras para sobrescrita de métodos:
− Não pode enviar exceção “checked” nova ou
mais ampla que a do método pai
− O método filho pode enviar menos exceções
− Proibido sobrescrever FINAL
− Proibido sobrescrever STATIC
− Se não pode ser herdado, não pode ser
sobrescrito
21. Sobrecarga/Sobrescrita
public class Animal {
public void eat() { }
}
Dado o método acima, qual das sobrescritas
abaixo são válidas?
A) private void eat() {}
B) public void eat() throws IOException{}
C) public void eat(String food)
D) public String eat()
22. Sobrecarga/Sobrescrita
Regras para Sobrecarga:
− Deve alterar a lista de argumentos
− PODE mudar tipo de retorno
− PODE modificar o modificador de acesso
− PODE declarar novas ou mais amplas
exceções
− Pode ser sobrecarregado na mesma classe
ou em uma subclasse
23. Sobrecarga/Sobrescrita
class Adder {
public int addThem(int x, int y) {
return x + y;
}
public double addThem(double x, double y) {
return x + y;
}
}
24. Sobrecarga/Sobrescrita
public class TestAdder {
public static void main (String [] args) {
Adder a = new Adder();
int b = 27;
int c = 3;
int result = a.addThem(b,c);
double doubleResult = a.addThem(22.5,9.3);
}
}
Quais serão os métodos invocados?
25. Sobrecarga/Sobrescrita
class Animal { }
class Horse extends Animal { }
class UseAnimals {
public void doStuff(Animal a) {
System.out.println(quot;In the Animal versionquot;);
}
public void doStuff(Horse h) {
System.out.println(quot;In the Horse versionquot;);
}
26. Sobrecarga/Sobrescrita
public static void main (String [] args) {
UseAnimals ua = new UseAnimals();
Animal animalObj = new Animal();
Horse horseObj = new Horse();
Animal animalRefToHorse = new Horse();
ua.doStuff(animalObj);
ua.doStuff(horseObj);
ua.doStuff(animalRefToHorse);
}
}
O que será apresentado em cada uma das
invocações?
27. Sobrecarga/Sobrescrita
public class Animal {
public void eat() {
System.out.println(quot;Generic Animal Eating Genericallyquot;);
}
}
public class Horse extends Animal {
public void eat() {
System.out.println(quot;Horse eating hay quot;);
}
public void eat(String s) {
System.out.println(quot;Horse eating quot; + s);
}
}
31. Construtores
Objetivo 1.6 - “Dado um conjunto de classes e
superclasses, desenvolver construtores para
uma ou mais classes. Dada uma declaração de
classe, determinar se um construtor default
será criado, e se sim, determinar o
comportamento daquele construtor. Dado um
listamento de classes aninhado ou não,
escrever código para instanciar aquela classe.”
32. Construtores
Objetivo 5.3 - “Explicar o efeito dos
modificadores na herança no que diz respeito à
construtores, variáveis e métodos de instância
e estáticos.”
Objetivo 5.4 - “Dado um cenário, desenvolver
código que declare e/ou invoque métodos
sobrecarregados ou sobrescritos e código que
declare construtores de superclasse,
sobrecarregados ou sobrescritos.”
33. Construtores
Interfaces não podem ter construtores
Classes concretas e abstratas DEVEM ter
construtores
Construtores NÃO possuem retorno
Construtores aceitam qualquer modificador de
acesso
O nome do método construtor deve ter o nome
IGUAL ao da classe
34. Construtores
Se não houver nenhum explícito, haverá um
construtor default implícito gerado pelo
compilador
− O construtor default é sempre sem argumentos
− Caso seja feito algum construtor, o compilador não
gerará o construtor default implícito
O primeiro comando de um construtor sempre
será a chamada de um outro construtor
sobrecarregado ou construtor da superclasse
− this()
− super()
35. Construtores
Caso não seja inserido um super() ou this(), o
compilador irá inserir um super()
automaticamente
Não é possível acessar um método ou variável
de instância antes da execução do super()
Apenas variáveis ou métodos estáticos podem
ser acessadas como parte da chamada super()
ou this() - Ex.: super(Animal.NAME)
Construtores de classes abstratas são
chamados quando subclasses concretas são
instanciadas