Este documento fornece uma introdução sobre o desenvolvimento de aplicativos móveis usando a plataforma TotalCross. Ele discute conceitos como computação móvel, tecnologias disponíveis e apresenta o TotalCross, incluindo suas características, SDK e processos de compilação e distribuição. Também fornece uma visão geral da interface gráfica e dicas sobre como adicionar controles.
Desenvolva aplicações mobile para Android e iOS usando a plataforma de desenvolvimento TotalCross. Você cria o seu código em JAVA e entrega para os principais sistemas mobile e mais, também para desktops. Baixe gratuitamente pelo site www.totalcross.com
O documento resume os principais pacotes e funcionalidades do framework TotalCross, incluindo classes para geração e leitura de barcode, conectividade bluetooth e GPS, câmera, mapas, criptografia, entrada/saída, JSON, linguagem, rede, telefone, sistema, teste unitário, utilitários e XML.
O documento descreve as principais novidades da versão 15 da distribuição Linux Caixa Mágica, incluindo um novo tema gráfico, melhor suporte de hardware, conta de convidado, partições cifradas, atualizações de ambientes desktop e aplicações, e ferramentas de controlo parental aprimoradas.
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTVmulder3
O documento fornece uma introdução ao Microsoft Mediaroom, uma plataforma de IPTV. Resume que o Mediaroom suporta funcionalidades como TV ao vivo, VOD e DVR e usa protocolos padrão, mas não é totalmente interoperável. Também descreve brevemente o hardware, sistema operativo e processo de boot da plataforma.
O documento fornece instruções sobre como criar e implantar um projeto no TotalCross Studio. Ele explica como criar um novo projeto, adicionar contêineres e componentes, simular o projeto e compilá-lo, e implantá-lo em um dispositivo Android usando o arquivo APK gerado.
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Nécio de Lima Veras
Apresentação utilizada no WESSAC 2014 para apresentação do artigo intitulado de "Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviços de Saúde".
O documento discute testes de software, incluindo níveis de teste, modos de teste e abordagens como TDD (Desenvolvimento Dirigido por Testes) e BDD (Projeto Guiado por Comportamento). Ele fornece exemplos de como aplicar TDD e BDD, destacando a importância dos testes para medir a qualidade do software e reduzir falhas.
Desenvolva aplicações mobile para Android e iOS usando a plataforma de desenvolvimento TotalCross. Você cria o seu código em JAVA e entrega para os principais sistemas mobile e mais, também para desktops. Baixe gratuitamente pelo site www.totalcross.com
O documento resume os principais pacotes e funcionalidades do framework TotalCross, incluindo classes para geração e leitura de barcode, conectividade bluetooth e GPS, câmera, mapas, criptografia, entrada/saída, JSON, linguagem, rede, telefone, sistema, teste unitário, utilitários e XML.
O documento descreve as principais novidades da versão 15 da distribuição Linux Caixa Mágica, incluindo um novo tema gráfico, melhor suporte de hardware, conta de convidado, partições cifradas, atualizações de ambientes desktop e aplicações, e ferramentas de controlo parental aprimoradas.
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTVmulder3
O documento fornece uma introdução ao Microsoft Mediaroom, uma plataforma de IPTV. Resume que o Mediaroom suporta funcionalidades como TV ao vivo, VOD e DVR e usa protocolos padrão, mas não é totalmente interoperável. Também descreve brevemente o hardware, sistema operativo e processo de boot da plataforma.
O documento fornece instruções sobre como criar e implantar um projeto no TotalCross Studio. Ele explica como criar um novo projeto, adicionar contêineres e componentes, simular o projeto e compilá-lo, e implantá-lo em um dispositivo Android usando o arquivo APK gerado.
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Nécio de Lima Veras
Apresentação utilizada no WESSAC 2014 para apresentação do artigo intitulado de "Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviços de Saúde".
O documento discute testes de software, incluindo níveis de teste, modos de teste e abordagens como TDD (Desenvolvimento Dirigido por Testes) e BDD (Projeto Guiado por Comportamento). Ele fornece exemplos de como aplicar TDD e BDD, destacando a importância dos testes para medir a qualidade do software e reduzir falhas.
Introdução a Programação de Dispositivos Móveisigorpimentel
O documento apresenta informações sobre desenvolvimento para dispositivos móveis usando a plataforma Java ME. Apresenta as configurações CLDC e CDC, o perfil MIDP, componentes, ambientes de desenvolvimento e exemplo de código "Olá Mundo". Aborda também empacotamento, distribuição e emulação de aplicativos móveis Java.
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 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.
1. Java Micro Edition (Java ME) é uma plataforma Java para dispositivos móveis com recursos limitados como celulares. 2. A plataforma é modular e escalável, organizada em camadas como a máquina virtual KVM, configurações como CLDC e perfis como MIDP. 3. MIDlets são aplicativos Java ME empacotados em arquivos JAR e JAD para execução em dispositivos móveis.
O documento discute vários tópicos relacionados ao desenvolvimento web, incluindo protocolos da internet, bancos de dados, servidores web, hospedagem e tendências. Ele também apresenta uma dinâmica sobre o desenvolvimento de um produto Software as a Service.
O documento fornece uma visão geral da história, características e componentes da plataforma Java. Descreve a evolução da linguagem desde seu desenvolvimento inicial em 1991 até as principais versões lançadas. Explica também os principais mitos sobre Java e ressalta suas características como orientação a objetos, independência de plataforma, segurança e desempenho.
O documento fornece uma visão geral da história, características e componentes da plataforma Java. Descreve o desenvolvimento da linguagem desde o projeto Green em 1991, seu lançamento em 1995 e evolução posterior. Detalha os principais conceitos como orientação a objetos, independência de plataforma, segurança e portabilidade que tornam Java popular para desenvolvimento web e mobile.
O documento resume tópicos sobre desenvolvimento web, incluindo:
1) Uma dinâmica para apresentar colegas em potenciais entrevistas de emprego;
2) Uma explicação sobre os principais protocolos da Internet como IP, TCP, UDP, DNS, POP, SMTP, IMAP e HTTP;
3) Uma discussão sobre tendências em tecnologias como dispositivos móveis, RIA, HTML5 e linguagens de programação;
4) Uma revisão de tópicos de infraestrutura como bancos de dados, servidores web
Este documento fornece um resumo sobre sistemas embarcados, incluindo suas principais plataformas e recursos. É descrito o que são sistemas embarcados e seus tipos, como Arduino, Raspberry Pi, linguagens de programação como C/C++ e Python. Demonstrações práticas de conceitos são apresentadas no final.
O documento introduz conceitos básicos sobre J2ME, incluindo o que é um dispositivo wireless, por que usar J2ME, como deve parecer uma aplicação J2ME e o que são configurações, perfis e MIDlets.
O documento descreve a linguagem de programação Java, incluindo sua história, características, aplicações e como funciona a Máquina Virtual Java (JVM). A linguagem Java foi desenvolvida pela Sun Microsystems na década de 1990 e se tornou popular para desenvolvimento web e de aplicativos móveis devido à sua portabilidade entre plataformas.
O documento discute o desenvolvimento de aplicativos móveis usando a plataforma Java. Apresenta os conceitos-chave da plataforma Java ME, incluindo configurações, perfis e máquinas virtuais. Também discute tópicos como ciclo de vida de MIDlets, pacotes importantes e boas práticas de projeto para aplicativos móveis.
Ferramentas de Programação Paralela para Arquiteturas MulticoreHelton Ritter
O documento discute ferramentas de programação paralela para arquiteturas multicore, incluindo Pthreads, Cilk, TBB, OpenMP, HPF e CUDA. Ele apresenta exemplos de aplicações paralelas em áreas como medicina, meteorologia e astronomia. Resultados experimentais mostram que OpenMP e C paralelo podem acelerar multiplicação de matrizes em relação a sequencial.
O documento discute as principais plataformas e tecnologias para desenvolvimento de aplicações móveis, incluindo Symbian, Windows Mobile, Java ME, BREW, Flash Lite, iPhone SDK, Android e IMS. Também aborda desafios de desenvolvimento, como portabilidade, usabilidade e segurança, e novas tecnologias promissoras como NFC.
O documento discute a história e conceito de sistemas embarcados, desde os primeiros computadores nas décadas de 30-40 até os sistemas atuais. Ele descreve exemplos de aplicações, a arquitetura conceitual de hardware e software, e como os projetos são implementados. Por fim, discute o futuro promissor da área, com sistemas cada vez mais inteligentes e conectados.
Java alem das aplicacoes comerciais convencionaisLeonardo Simberg
O documento discute várias aplicações não convencionais para Java, incluindo Blu-ray Disc, jogos 3D, sistemas embarcados, inteligência artificial e computação em nuvem. Ele destaca como Java pode ser usado para aplicações além do desktop e web tradicionais.
Desenvolvimento aplicacoesdispositivosmoveisJuarez Junior
[1] O documento apresenta as principais plataformas e tecnologias para desenvolvimento de aplicações móveis, incluindo Symbian, BREW, Android, iPhone e Java ME.
[2] É descrito o ciclo de vida de MIDlets no Java ME e apresentadas as configurações, perfis e pacotes opcionais desta plataforma.
[3] Também são apresentadas tendências para o Java ME, como o eSWT, que trará novos controles e compatibilidade com padrões como SVG.
[1] O documento apresenta as principais plataformas e tecnologias para desenvolvimento de aplicações móveis, incluindo Symbian, BREW, Android, iPhone e Java ME.
[2] É descrito o ciclo de vida de MIDlets no Java ME e apresentadas as configurações, perfis e pacotes opcionais desta plataforma.
[3] Também são apresentadas tendências como o eSWT, que trará novos controles e funcionalidades avançadas para aplicações móveis.
O documento fornece um resumo abrangente sobre a linguagem Java e sua plataforma, incluindo: 1) Uma introdução à linguagem Java, sua especificação e comunidade; 2) Uma explicação da máquina virtual Java e suas implementações; 3) Uma visão geral das principais plataformas, tecnologias e frameworks Java.
Este documento fornece uma introdução ao JavaFX, incluindo:
1) JavaFX é a nova toolkit de interface gráfica para aplicativos Java baseados em desktop, embarcados e móveis.
2) Fornece controles, layouts, gráficos 2D e 3D acelerados, suporte a áudio e vídeo e animações.
3) O SceneBuilder é um editor WYSIWYG para criar interfaces gráficas em JavaFX.
O documento introduz conceitos básicos sobre análise e complexidade de algoritmos. Aborda o que é um algoritmo, tipos importantes de problemas, estratégias de projeto de algoritmos e como calcular a complexidade temporal e espacial de um algoritmo, analisando os casos de melhor, pior e médio caso. Também apresenta a notação assintótica O, Ω e θ para definir limites do crescimento de funções.
Introdução a Programação de Dispositivos Móveisigorpimentel
O documento apresenta informações sobre desenvolvimento para dispositivos móveis usando a plataforma Java ME. Apresenta as configurações CLDC e CDC, o perfil MIDP, componentes, ambientes de desenvolvimento e exemplo de código "Olá Mundo". Aborda também empacotamento, distribuição e emulação de aplicativos móveis Java.
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 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.
1. Java Micro Edition (Java ME) é uma plataforma Java para dispositivos móveis com recursos limitados como celulares. 2. A plataforma é modular e escalável, organizada em camadas como a máquina virtual KVM, configurações como CLDC e perfis como MIDP. 3. MIDlets são aplicativos Java ME empacotados em arquivos JAR e JAD para execução em dispositivos móveis.
O documento discute vários tópicos relacionados ao desenvolvimento web, incluindo protocolos da internet, bancos de dados, servidores web, hospedagem e tendências. Ele também apresenta uma dinâmica sobre o desenvolvimento de um produto Software as a Service.
O documento fornece uma visão geral da história, características e componentes da plataforma Java. Descreve a evolução da linguagem desde seu desenvolvimento inicial em 1991 até as principais versões lançadas. Explica também os principais mitos sobre Java e ressalta suas características como orientação a objetos, independência de plataforma, segurança e desempenho.
O documento fornece uma visão geral da história, características e componentes da plataforma Java. Descreve o desenvolvimento da linguagem desde o projeto Green em 1991, seu lançamento em 1995 e evolução posterior. Detalha os principais conceitos como orientação a objetos, independência de plataforma, segurança e portabilidade que tornam Java popular para desenvolvimento web e mobile.
O documento resume tópicos sobre desenvolvimento web, incluindo:
1) Uma dinâmica para apresentar colegas em potenciais entrevistas de emprego;
2) Uma explicação sobre os principais protocolos da Internet como IP, TCP, UDP, DNS, POP, SMTP, IMAP e HTTP;
3) Uma discussão sobre tendências em tecnologias como dispositivos móveis, RIA, HTML5 e linguagens de programação;
4) Uma revisão de tópicos de infraestrutura como bancos de dados, servidores web
Este documento fornece um resumo sobre sistemas embarcados, incluindo suas principais plataformas e recursos. É descrito o que são sistemas embarcados e seus tipos, como Arduino, Raspberry Pi, linguagens de programação como C/C++ e Python. Demonstrações práticas de conceitos são apresentadas no final.
O documento introduz conceitos básicos sobre J2ME, incluindo o que é um dispositivo wireless, por que usar J2ME, como deve parecer uma aplicação J2ME e o que são configurações, perfis e MIDlets.
O documento descreve a linguagem de programação Java, incluindo sua história, características, aplicações e como funciona a Máquina Virtual Java (JVM). A linguagem Java foi desenvolvida pela Sun Microsystems na década de 1990 e se tornou popular para desenvolvimento web e de aplicativos móveis devido à sua portabilidade entre plataformas.
O documento discute o desenvolvimento de aplicativos móveis usando a plataforma Java. Apresenta os conceitos-chave da plataforma Java ME, incluindo configurações, perfis e máquinas virtuais. Também discute tópicos como ciclo de vida de MIDlets, pacotes importantes e boas práticas de projeto para aplicativos móveis.
Ferramentas de Programação Paralela para Arquiteturas MulticoreHelton Ritter
O documento discute ferramentas de programação paralela para arquiteturas multicore, incluindo Pthreads, Cilk, TBB, OpenMP, HPF e CUDA. Ele apresenta exemplos de aplicações paralelas em áreas como medicina, meteorologia e astronomia. Resultados experimentais mostram que OpenMP e C paralelo podem acelerar multiplicação de matrizes em relação a sequencial.
O documento discute as principais plataformas e tecnologias para desenvolvimento de aplicações móveis, incluindo Symbian, Windows Mobile, Java ME, BREW, Flash Lite, iPhone SDK, Android e IMS. Também aborda desafios de desenvolvimento, como portabilidade, usabilidade e segurança, e novas tecnologias promissoras como NFC.
O documento discute a história e conceito de sistemas embarcados, desde os primeiros computadores nas décadas de 30-40 até os sistemas atuais. Ele descreve exemplos de aplicações, a arquitetura conceitual de hardware e software, e como os projetos são implementados. Por fim, discute o futuro promissor da área, com sistemas cada vez mais inteligentes e conectados.
Java alem das aplicacoes comerciais convencionaisLeonardo Simberg
O documento discute várias aplicações não convencionais para Java, incluindo Blu-ray Disc, jogos 3D, sistemas embarcados, inteligência artificial e computação em nuvem. Ele destaca como Java pode ser usado para aplicações além do desktop e web tradicionais.
Desenvolvimento aplicacoesdispositivosmoveisJuarez Junior
[1] O documento apresenta as principais plataformas e tecnologias para desenvolvimento de aplicações móveis, incluindo Symbian, BREW, Android, iPhone e Java ME.
[2] É descrito o ciclo de vida de MIDlets no Java ME e apresentadas as configurações, perfis e pacotes opcionais desta plataforma.
[3] Também são apresentadas tendências para o Java ME, como o eSWT, que trará novos controles e compatibilidade com padrões como SVG.
[1] O documento apresenta as principais plataformas e tecnologias para desenvolvimento de aplicações móveis, incluindo Symbian, BREW, Android, iPhone e Java ME.
[2] É descrito o ciclo de vida de MIDlets no Java ME e apresentadas as configurações, perfis e pacotes opcionais desta plataforma.
[3] Também são apresentadas tendências como o eSWT, que trará novos controles e funcionalidades avançadas para aplicações móveis.
O documento fornece um resumo abrangente sobre a linguagem Java e sua plataforma, incluindo: 1) Uma introdução à linguagem Java, sua especificação e comunidade; 2) Uma explicação da máquina virtual Java e suas implementações; 3) Uma visão geral das principais plataformas, tecnologias e frameworks Java.
Semelhante a Minicurso de TotalCross e Litebase (20)
Este documento fornece uma introdução ao JavaFX, incluindo:
1) JavaFX é a nova toolkit de interface gráfica para aplicativos Java baseados em desktop, embarcados e móveis.
2) Fornece controles, layouts, gráficos 2D e 3D acelerados, suporte a áudio e vídeo e animações.
3) O SceneBuilder é um editor WYSIWYG para criar interfaces gráficas em JavaFX.
O documento introduz conceitos básicos sobre análise e complexidade de algoritmos. Aborda o que é um algoritmo, tipos importantes de problemas, estratégias de projeto de algoritmos e como calcular a complexidade temporal e espacial de um algoritmo, analisando os casos de melhor, pior e médio caso. Também apresenta a notação assintótica O, Ω e θ para definir limites do crescimento de funções.
O documento fornece uma introdução ao sistema de controle de versão Git, descrevendo suas principais características como ser distribuído, eficiente e leve. Explica os três estados de um arquivo no Git e fornece instruções básicas para instalação, criação de um repositório local e conexão a um repositório remoto.
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoNécio de Lima Veras
é o nome do agente
nome
concert(A,V): é um átomo de crença
+concert(A,V): é um evento de adição
like(A): é um teste de crença
!reserve: é um objetivo de realização
not busy: é um teste de crença
call(V): é uma ação
buy(A,V): é uma ação
choose_seats(A,V): é uma ação
.end: finaliza o plano
Um plano na linguagem AgentSpeak
Exemplo de programação
Base de crenças inicial:
Este documento resume um estudo sobre a programação de componentes definidos pelo usuário no Jason. Discute-se como estender as capacidades dos agentes implementados no Jason através de ações internas e personalização de classes. Apresenta exemplos de como definir novas ações internas em Java e como customizar a classe Agent para alterar o comportamento de seleção de eventos, intenções e mensagens.
Este documento apresenta uma introdução ao desenvolvimento de agentes inteligentes usando o interpretador Jason para a linguagem AgentSpeak(L). A agenda inclui uma discussão sobre a arquitetura BDI, AgentSpeak(L), e as funcionalidades do Jason como interpretação de eventos, planos e ações.
O documento discute a programação de ambientes em sistemas multi-agentes. Ele introduz os conceitos de ambientes na inteligência artificial e engenharia de software orientada a agentes. Também descreve modelos de programação de ambientes, incluindo modelos de ação, percepção, computação, dados e distribuição de ambientes. O documento fornece uma fundamentação teórica para a programação de ambientes em sistemas multi-agentes.
Arquiteturas concretas de agentes inteligentes - bdi agentsNécio de Lima Veras
O documento discute a arquitetura BDI para agentes inteligentes. A arquitetura BDI é inspirada nos estados mentais de crenças, desejos e intenções e representa o processo de raciocínio prático dos agentes. O estado de um agente BDI é representado pela tripla de crenças, desejos e intenções e as funções de revisão de crenças, geração de opções e filtragem determinam como esses estados mentais evoluem ao longo do tempo.
1) O documento discute potências e raízes, incluindo propriedades de potências de expoente inteiro negativo e propriedades da raiz enésima aritmética.
2) Também aborda potências de expoente racional, logaritmos e suas propriedades, e progressões aritméticas e geométricas.
3) Por fim, apresenta notações assintóticas para analisar o crescimento de funções, como Big O, o, Ω e ω.
O documento apresenta especificações iniciais para agentes inteligentes baseados na estrutura PEAS (Performance, Environment, Actuators, Sensors) e PAGE (Goals, Actions, Perceptions). São descritos três agentes: um irrigador de cultura, um designador de tarefas e um agente do programa PMAQ.
O documento fornece uma introdução aos conceitos de agentes, definindo-os como entidades capazes de perceber seu ambiente e interagir com ele. Explora as noções de racionalidade, aprendizagem e autonomia em agentes, além de discutir os tipos de ambientes e as estruturas de agentes, incluindo agentes reativos e baseados em objetivos.
Este documento discute mapeamento objeto-relacional em Java usando anotações. Ele explica como anotações como @Entity, @Table, @Id, @GeneratedValue, @Basic, @Temporal e @Lob mapeiam classes Java para tabelas de banco de dados e campos. Ele também discute como configurar e usar o framework Hibernate no Eclipse para estabelecer o mapeamento objeto-relacional e gerar automaticamente tabelas no banco de dados.
1) O documento discute como realizar consultas no banco de dados usando o framework Hibernate. 2) Existem três maneiras de fazer consultas no Hibernate: HQL, Critérios e SQL nativo. 3) Vários exemplos de consultas HQL são apresentados, incluindo parâmetros, joins, funções agregadas e consultas nomeadas.
O documento discute estratégias de mapeamento de herança em frameworks ORM, incluindo single table, joined e table per class. Ele também cobre callbacks e caches no JPA.
O documento discute mapeamento objeto-relacional usando anotações JPA. Ele explica como mapear diferentes tipos de relacionamentos entre entidades, incluindo atributos compostos, relacionamentos um-para-um, um-para-muitos, muitos-para-um e muitos-para-muitos. Também aborda cascateamento, carregamento de associações e uso de classes internas para mapear relacionamentos muitos-para-muitos com atributos.
O documento discute mapeamento objeto-relacional (MOR) usando Java Persistence API (JPA). Ele explica o problema da diferença entre programação orientada a objetos e bancos de dados relacionais e como JPA resolve isso mapeando classes para tabelas de banco de dados. Também descreve características e implementações de JPA como Hibernate e anotações comuns como @Entity e @Table.
Este documento apresenta um estudo aplicado sobre interfaces gráficas em ambientes heterogêneos usando ferramentas de autoria. O objetivo é realizar um estudo prático de produção de interfaces em web, desktop e mobile. Inclui informações sobre componentes Swing, gerenciadores de layout e tratamento de eventos em Java.
Este documento apresenta os principais conceitos da Linguagem de Modelagem Unificada (UML). Resume os principais métodos de engenharia de software orientados a objetos que levaram ao desenvolvimento da UML e descreve os tipos de modelos e diagramas que compõem a UML, incluindo classes, sequências, casos de uso e máquinas de estados.
Este documento apresenta uma introdução sobre sistemas operacionais, descrevendo seu objetivo de facilitar o acesso aos recursos de hardware e gerenciar o uso do sistema de computação. Explica que o sistema operacional esconde detalhes complexos e apresenta uma máquina virtual mais fácil de usar. Apresenta também exemplos de sistemas operacionais como Windows e Linux.
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...Nécio de Lima Veras
O documento descreve uma pesquisa sobre a organização de um repositório de objetos de aprendizagem para dispositivos móveis. Ele inclui a introdução, objetivos, metodologia, desenvolvimento da pesquisa, conclusões e trabalhos futuros.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
1. Mini-curso
TotalCross
Desenvolvimento de Aplicativos
para Dispositivos Móveis
Prof. Nécio de Lima Veras
2. Agenda
Parte 1 (Introdução)
– A computação móvel;
– Tecnologias;
– O TotalCross (A plataforma);
– Visão Geral (GUI);
Parte 2 (Desenvolvendo)
– Interface Gráfica com o Usuário;
– Classes Utilitárias;
Parte 3 (Persistência de Dados)
– Litebase;
4. Computação
Móvel
• Tema bastante abrangente;
• Pode representar um novo paradigma:
– Mais acesso a serviços sem fronteiras físicas (localização);
– “Acesso à Informação em qualquer lugar e a qualquer
momento”;
• Dispositivos:
– Laptop e Palmtop;
– PDA's;
– Celulares;
• Infra-estrutura:
– Redes Internas;
– Redes Externas;
– Redes Ad-hoc;
5. Computação
Móvel
• Principais problemas:
– Erros em Transmissões Sem Fio;
– Energia;
– Interface com os dispositivos;
– Capacidade dos dispositivos;
– Segurança;
– Necessidades de adaptações p/ o
desenvolvedor;
6. Computação
Móvel
• Aplicações e Serviços:
– Pessoais;
– Corporativas;
– Financeiras;
– Ciências Médicas;
– Policiamento e Segurança;
– Militares;
– Informações em Geral;
– Entretenimento;
– Comércio Eletrônico Móvel (M-Commerce);
– Serviços baseados em localização;
Fonte: T&C Amazônia, ano 1, núm 2 (2003).
11. O TotalCross
(A plataforma)
1. Visão Geral (características, vantagens competitivas e
características técnicas);
2. O SDK;
3. Compilando, distribuindo e instalando suas aplicações;
4. Instalando e configurando a ferramenta Eclipse;
12. Visão Geral
O que é TotalCross? (Um pouco de história)
É uma plataforma para desenvolvimento de
aplicações para PDAs e smartphones.
Usa o conceito “write once run anywhere”;
Substitui o SuperWaba;
• MV totalmente NOVA;
• P/ migração: SW2TC;
13. Visão Geral
Códigos Java (com SDK próprio);
Plataformas suportadas:
iPhone (1.1.4);
BlackBerry (4.3.0);
Palm OS (5, 3 e 4 – sem suporte a multithread);
Windows CE (3.0, .NET, Windows Mobile 5 e 6):
• Pocket PC (ARM, SH3 e MIPS);
• PPC ARM;
• HPC 2000 ARM;
Windows 2000;
Linux;
Navegadores (Java applets – JDK 1.1 ou superior);
14. Visão Geral
Características da Máquina Virtual:
Possui seus próprios bytecodes (proprietário);
Suas classes são otimizadas para economizar espaços (ex: os pool’s são
compartilhados entre todas as classes distribuídas);
• As classes são comprimidas usando o zlib;
Possui suporte a aplicações headless (basta estender a interface
totalcross.MainClass);
Possui manipulação especial de arrays (verificações de looping);
Novos recursos para o GC (dontFinalize);
Inconvenientes:
Não suporta float, apenas double (limitação de não possuir um co-processador
matemático);
Quer dizer que não posso usar variáveis do tipo float?
• Sim, pode, pois o compilador irá traduzir;
15. Visão Geral
Suporte a Threads:
Possui suporte nativo à preempção;
Não suporta, por enquanto, concorrência e nem sincronização;
• Porém, é possível “escutar” um socket, ou um arquivo, ou ainda,
percorrer uma tabela em background;
Usar threads para interface gráfica, por enquanto, é inseguro e
não recomendado;
É utilizado principalmente para I/O;
Gráficos, Paleta e Cores:
As imagens são armazenadas em 24 bits (RGB);
Possui suporte à rotação de telas;
As cores são representadas pelo formato: 0xRRGGBB (null =
-1);
16. Visão Geral
Mais Recursos:
– Gráficos de Linha e Barra;
– Gerenciamento de conexões;
– Manipulação de Câmera (windows mobile);
– Fontes de tamanho ilimitado (com anti-aliasing);
– Suporte à rotação de telas;
Segurança:
Decompilação impossível;
Faça Backups, pois também não é possível decompilar uma
aplicação distribuída;
Suporte a SSL;
Algoritmos nativos de criptografia;
17. Especificações Técnicas
Recursos básicos:
– Qualquer IDE Java;
– Depuração com Applet;
– Rica em GUI;
● Recursos avançados:
● Suporte à UNICODE;
● GPS;
● XML;
● Captura de Vídeo, Fotos e Voz;
● Desenvolvimento de Jogos;
● Suporte à leitor de código de barras;
● Biblioteca Zlib;
● Suporte à múltiplos formatos de imagens: BMP, JPEG, PNG e GIF;
● Suporte a HTML;
18. Especificações Técnicas
Manipulação de dados:
Classe File para manipulação de arquivos (cartões SD e MMC);
Classe PDBFile para manipulação de arquivos PDB (Palm
Database) em todas as plataformas alvo;
SGDB c/ Litebase;
Conectividade:
Suporte a Socket para TCP/IP, IR, Porta Serial, USB e
Bluetooth;
Possui ServerSocket;
Suporte aos protocolos: SMS, HTTPS, FTP e SMTP;
Discagem de números;
WebServices;
19. Especificações Técnicas
Requisitos Mínimos:
O Kit de Desenvolvimento TotalCross (SDK) pode ser instalado em Windows 98/
ME/NT/2000/XP, Linux e Mac OS-X.
Pentium II ou equivalente com 128Mb de memória disponível.
Mínimo de 200 Mb livres em disco .
JDK 1.6 ou superior (utilizado durante o empacotamento da aplicação).
Imagens:
21. O SDK
Licença do SDK: LGPL V 3.0;
Licença da VM: Versão DEMO;
80 horas ininterruptas;
Esse tempo é atualizado a cada 5s;
É possível reiniciar esse tempo com um Hard
Reset;
E no Windows?
22. O SDK
Estrutura de diretórios:
Dist (classes base e ferramentas de deploy)
+ samples (exemplos)
+ vm (máquinas virtuais)
+ docs (documentação)
+ etc (imagens, launchers, arquivos de
assinaturas, tools)
+ src (fontes dos exemplos)
23. Processos de compilação, distribuição
e instalação (introdução)
O desenvolvimento é idêntico ao de Java;
Porém existem diferenças e cuidados:
Superclasse (MainWindow) ou a interface MainClass;
Execução: a Classe Launcher;
Por conveniência, existe o pacote totalcross.lang (ex.:
String e Object). Cuidado com as classes Wrapper;
O TC é apenas compatível com o formato de
arquivos de classe Java 1.1, por tanto, o JDK 1.1 ou
1.2;
• Linha de comando: “-target 1.1 –source 1.2”;
• Para as IDE’s Java deve-se usar o level de 1.3;
24. Processos de compilação, distribuição
e instalação
Criando uma primeira aplicação, o “Hello World”:
1º. Passo: Instalar o SDK do Java;
2º. Passo: Instalar o SDK do TC;
3º. Passo: Configurar o classpath [opcional] p/ o Java e TC;
4º. Passo: Implementar!
package br.sinfo.necio.demos;
import totalcross.ui.*;
public class FirstHello extends MainWindow {
public void initUI(){
add (new Label("Hello World!"),0,0);
}
}
25. Processos de compilação, distribuição
e instalação
Compilação em linha de comando:
javac -target 1.1 -source 1.2 FirstHello.java
Lembre-se, caso você NÃO configure o
CLASSPATH, ficaria assim:
javac -classpath
/opt/totalcrossSDK/dist/tc.jar -target 1.1
-source 1.2 FirstHello.java
26. Processos de compilação, distribuição
e instalação
Para executar uma aplicação em TC, use
como ponto de partida a classe Launcher;
java -classpath .;%CLASSPATH%
totalcross.Launcher FirstHello
Resultado:
27. A Classe Launcher
É uma aplicação JAVA;
Formato básico:
totalcross.Launcher [optional arguments] <main class>
Argumentos:
Resolução de Tela (/scr);
Definição de cores (/bpp);
Estilo de interface com o usuário (/uiStyle);
Características de dispositivos:
• /penlessDevice;
• /keypadOnly;
28. Processos de compilação, distribuição
e instalação
O TC facilita o processo de distribuição, através da
classe tc.Deploy:
java tc.Deploy FirstHello –all
Lembre-se do CLASSPATH !
O argumento “-all” define os tipos de distribuição, que
podem ser:
palm ou –palmos;
ce ou –wince;
win32;
bb ou blackberry;
applet ou html;
29. Processos de compilação, distribuição
e instalação
O tc.Deploy criará para tipo de distribuição
uma pasta chamada install contendo:
Os instaladores;
Os executáveis (se for o caso);
As bibliotecas necessárias;
Exemplo do Windows:
Tamanho padrão de tela: 240x320;
Personalização: /scr x,y,width, heidht;
30. Opções da classe Deploy passadas
através do construtor de MainWindow
Opção Valor padrão Código Resultado
31. Opções da classe Deploy
passadas através do construtor
Opção Valor padrão Código Resultado
32. Instalando e configurando
a ferramenta Eclipse
Podemos fazer isso
em qualquer
versão do eclipse;
Vamos lá:
Inicie um projeto
Java normal;
Feito isso, vá nas
propriedades do
projeto, na aba
Libraries e
adicione uma
“Library”:
33. Instalando e configurando
a ferramenta Eclipse
Adicione uma “User
Library” (nome
sugerido: TCLibrary);
Depois, adicione um
Jar (“Add JARs”);
Você deve adicionar o
arquivo tc.jar (pasta
dist do
TOTALCROSS_HOM
E;
Depois, configure o
Source e o JavaDoc;
Feito isso, deve ficar
assim:
34. Instalando e configurando
a ferramenta Eclipse
A aplicação deve
ficar com DUAS
bibliotecas:
JRE do Java;
TCLibrary;
Não esqueça de
também configurar
o compilador com o
nível 1.3;
35. Instalando e configurando
a ferramenta Eclipse
Agora, vamos testar:
Crieuma classe Hello.java (conforme
vimos antes);
• Não esqueça de que a sua superclasse é a
MainWindow;
Personalizaremos uma configuração no
“Run Dialog”, com:
• A classe mãe;
• Argumentos;
37. Instalando e configurando
a ferramenta Eclipse
Se o resultado
deve ser este =>
Parabéns!
Agora, estamos
com tudo pronto
para iniciar o
desenvolvimento
de aplicações!
39. Controles
(Estrutura da classe MainWindow)
Método initUI();
Método onExit();
Informações Importantes:
O método initUI é abstrato de um Container;
• Deve-se inicializar TODAS as UI’s nele;
O método onExit apenas é chamado em
circunstâncias normais de saída;
• Qualquer saída anormal, o método NÃO é chamado;
Para alterar títulos e estilos é aconselhável chamá-lo
no construtor da classe MainWindow (super);
40. Adicionando Controles
Os controles apenas podem ser
adicionados em Containers e suas
subclasses (como a MainWindow);
Para criar o espaço de visualização do
controle existe o método:
setRect (x, y, width, height)
Exemplo: setRect(10,10,40,20);
41. Métodos relacionados ao
posicionamento e adição de controles
setRect:
(x, y, width, height);
(Rect r);
(x, y, width, height, Control relative);
add:
(Control, x, y);
(Control, x, y, Control relative);
(Control, x, y, width, height);
(Control, x, y, width, height, Control relative);
42. Um pouco de Prática
Adicione Label’s para mostrar as
coordenadas de direções:
Norte, Sul, Leste, Oeste, Nordeste, Noroeste,
Sudeste, Sudoeste e CENTRO;
O comando para adicionar um label, pode
ser:
add(new Label(“N”),60,0, 12, 12);
Ao final deve ficar assim:
43. Reflexão sobre o exercício
Agora, com o exercício pronto, faça:
Tente aumentar o tamanho da tela;
Algo deu errado?
JAMAIS devermos definir posição com
valores exatos!
E agora?
44. Solução:
Coordenadas relativas
Para a coordenada X:
LEFT: O controle é posicionado na posição 0
horizontal;
RIGHT: Alinha o controle à direita;
CENTER: Alinha no centro horizontal do
Container;
BEFORE: Coloca o controle ANTES do último
controle adicionado;
AFTER: Coloca o controle DEPOIS do último
controle adicionado;
SAME: Coloca o controle na MESMA
coordenada X do último controle adicionado;
45. Coordenadas relativas
Para a coordenada Y:
TOP: Coloca o controle na posição 0 vertical;
BOTTOM: Coloca o controle na base do
Container;
CENTER: centraliza verticalmente o controle no
Container;
BEFORE: Coloca o controle ANTES do último
controle adicionado;
AFTER: Coloca o controle DEPOIS do último
controle adicionado;
SAME: Coloca o controle na MESMA coordenada
Y do último controle adicionado;
46. Coordenadas relativas
Largura:
PREFERRED: o controle é ajustado conforme sua
MELHOR largura;
• É usado, normalmente, para controles de textos;
FILL:o controle usará TODO o espaço disponível
da esquerda até o final do Container;
• NÃO pode ser usado em conjunto com RIGHT/
CENTER;
SAME: o controle será adicionado com a mesma
largura do último adicionado;
FIT: o controle será posicionado entre uma posição
específica em X e último controle adicionado;
47. Coordenadas relativas
Altura:
PREFERRED: o controle será desenhado
com a melhor altura possível;
FILL: o controle será posicionado da
esquerda até o final do Container;
• Não pode ser usando em conjunto com BOTTOM/
CENTER;
SAME: o controle usará a mesma altura do
último controle adicionado;
FIT: o controle será posicionado entre uma
posição específica em Y e último controle
adicionado;
48. Coordenadas relativas
Observações:
Antesde chamar o setRect de um controle,
você deve, preferencialmente, adicioná-lo ao
Container;
O controle de coordenadas sempre é
relativo à coordenada do controle PAI;
Não se usa FIT com largura e altura ao
mesmo tempo;
Podemos usar refinamentos nas
coordenadas relativas, mas sem
EXAGERO;
• Use no máximo variações entre -5 e +5;
• Não é sugerido usar valores acima de 5;
49. Praticando...
Que tal refazer o exercício anterior,
agora da maneira correta?
50. Eventos
Representam todas as atividades
entre o usuário e a aplicação;
Quando um usuário interage com o
programa, a VM cria um evento
representando a ação e
comunicação;
51. A Classe Event
O TC possui 4 classes para manipulação
de eventos:
ControlEvent;
PenEvent;
KeyEvent;
Event (classe Pai);
Membros da classe Event:
type (código do evento passado);
target (originador do evento);
52. Exemplo
package br.sinfo.necio.demos;
import totalcross.ui.Label;
import totalcross.ui.MainWindow;
import totalcross.ui.event.Event;
import totalcross.ui.event.KeyEvent;
public class PenEvent extends MainWindow {
Label l;
public void initUI(){
add (l = new Label("Pressione uma tecla!"), CENTER, CENTER,
PREFERRED, PREFERRED);
}
public void onEvent(Event e){
if (e.type == KeyEvent.KEY_PRESS){
l.setText("Obrigado pela tecla pressionada!");
l.setRect(CENTER, CENTER, PREFERRED, PREFERRED);
}
}
}
53. Tipos mais comuns de eventos
manipulados pelo ControlEvent
PRESSED: é chamado quando acontece
um PEN_DOWN, PEN_UP ou um
WINDOW_CLOSED;
FOCUS_IN e FOCUS_OUT;
TIMER: evento especial;
WINDOW_CLOSED: para alguns
elementos, o evento PRESSED é
chamado;
55. Interface Gráfica com o Usuário:
Controles Básico
● Estão embutidos no pacote: totalcross.ui;
● São eles:
● Button; Edit;Label; Check; Radio;
RadioGroupControler; ComboBox; ListBox; MultiEdit;
Grid e ToolTip;
● Podemos manipular:
● Cores (foregound/backgroup);
● Estados (enabled/disabled);
● Lembre-se de que as características dos controles
devem ser setadas ANTES do de seu desenho
(setRect);
56. Controle básico: Button
● Suporta textos multi-linhas e imagens
misturados;
● Possui 4 estilos de borda:
● BORDER_NONE;
● NORDER_SIMPLE;
● BORDER_3D;
● BORDER_3D_GRADIENT;
● O método setImage NÃO redimensiona o
botão;
57. Controle básico: Button
● Possui um campo estático
commonGap;
● Possui o método
setPressedColor;
● A cor de fundo de um
botão com bordas 3D
gradiente, sempre será
AZUL;
● Exercício: crie um exemplo
conforme a imagem:
58. Controle básico: Edit
● Trabalha com textos oriundos do teclado ou da área de escrita
manual (grafitti);
● Permite selecionar o texto e: copiar, cortar e colar;
● Possui dois construtores: com (máscara) e sem argumentos;
● Possui os métodos:
● setMaxLength;
● setValidChars;
● setMode (NORMAL, DATE, CURRENCY, PASSWORD,
PASSWORD_ALL);
● setEditable;
● setDecimalPlace;
59. Controle básico: Edit
● Possui os membros:
● overwrite (escrita
com INSERT ligado);
● autoSelect (ao
receber o foco);
● Exercício: Implemente
o exemplo da figura:
60. Controle básico: Label
● Texto estático;
● Pode possuir múltiplas linhas, separadas
pelo caractere ‘n’;
● Possui três construtores:
● Sem parâmetro;
● Com String texto;
● Com String texto e int align;
● O texto é automaticamente ajustado;
61. Controle básico: Label
● Possui os métodos:
● set3d;
● setInvert;
● setText;
● Como ele é multi-linha, as barras de
rolagem podem ser ativadas:
● scroll(boolean);
62. Controle básico: Label
Prática:
Crie um exemplo que mostre labels (em
linhas separadas) com as seguintes
características:
1. Simples alinhado à esquerda;
2. Simples centralizado;
3. 3d;
4. Invertido;
5. Com várias linhas.
63. Controle básico: Check
Serve como uma caixa de checagem;
O texto é alinhado à direita, caso não
queira isso atribua true ao campo
leftJustify;
Possui os métodos:
isChecked;
setChecked;
setText;
64. Controle básico: Radio e
RadioGroupControler
● O Radio permite escolher alternativas pré-
definidas;
● As opções podem ser agrupadas usando o
RadioGroupControler;
● O Radio possui 2 construtores:
● Recebendo uma String;
● Recebendo uma String e um Controlador;
● O RadioGroupControler NÃO é um controle então
NÃO pode ser adicionar a um Container;
65. Controle básico: Radio e
RadioGroupControler
● No RGC podemos:
● Verificar o índice do Radio selecionado
(getSelectedIndex);
● Selecionar um Radio pelo índice (setSelectedIndex);
● Os índices são baseados na ordem como são
inseridos;
66. Prática
● Exemplifique o uso destes componentes criando um
tipo de grupo com pelo menos 2 radios, conforme a
figura;
67. Controle básico: ComboBox
● Controle útil quando se precisar
selecionar um item em um conjunto de
itens;
● Possui 4 construtores, mas apenas 3 são
relevantes:
● Um vazio;
● Recebendo um ListBox;
● Outro recebendo um array de Objects;
68. Controle básico: ComboBox
● Atributos:
● fullHeight - boolean;
● fullWidth - boolean;
● Métodos:
● setBackgroudColor();
● add possui três variantes:
– add(Object item);
– add(Object[] items); - prefira este ao invés de muitas
chamadas ao anterior
– add(Object[] items, int startAt, int size);
● insert (Object, int index);
● setItemAt (int i, Object o);
● getItemAt (int i) ou indexOf(Object name);
● size();
70. Controle Básico: ListBox
● Permite selecionar um item de uma lista de
múltiplas linhas;
● Não é possível selecionar múltiplos itens;
● Possui 2 construtores:
● Um vazio;
● O outro recebendo Object[];
● Podemos adicionar itens pelo método add:
● add(Object item);
● add(Object[] moreItems); - prefira este ao invés de
muitas chamadas ao anterior;
● add(Object[] moreItems, int startAt, int size);
71. Controle Básico: ListBox
● Métodos:
● insert (Object item, int index);
● setItemAt (int i, Object o);
● size();
● getItemAt(int i); ou indexOf(Object name);
● getSelectedIndex() ou getSelectedItem();
● setSelectedIndex(int i) ou setSelectedItem(Object
name);
● selectLast();
73. Controle Básico: MultiEdit
● É basicamente, um Edit que suporta múltiplas
linhas;
● Construtores:
● MultiEdit(int rowCount, int spaceBetweenLines);
● MultiEdit(String mask, int rowCount, int
spaceBetweenLines);
● Possui uma vertical scrollbar, mas isso é preciso
ser habilitado;
● setScrollbarsAlwaysVisible(boolean asNeeded);
75. Controle básico: Grid
● Controle usado para mostrar tabulação de dados
com uma matriz de String;
● Opcionalmente é possível adicionar colunas extras
com com um checkBox ao lado esquerdo do Grid;
● Funcionalidades:
● Barras de rolagem horizontal e vertical com ajuste
automático ao tamanho da tela;
● Fácil interface para o usuário adicionar ou remover
informações no próprio Grid;
● Coluna opcional de checagem (para selecionar mais
de um linha);
76. Controle básico: Grid
● As colunas podem ser redimensionadas pelo
usuário;
● Estilos de cores personalizáveis;
● Gera eventos (contido na classe GridEvent);
● A coluna pode ser editável ou não;
● Ordenação da coluna com um click no título;
● Se o texto for maior que o tamanho da célula,
poderá ser clicado e aparecerá um tooltip com o
texto completo;
● É possível customizar uma célula com a classe
CellControler manipulando:
– Cores (back e fore);
– Estado (enable/disable);
77. Controle básico: Grid
● Construtores:
● Grid(String[] captions, boolean checkEnabled);
● Grid(String[] captions, int[] widths, int[] aligns, boolean
checkEnabled);
● Métodos:
● add(String[] item) – apenas UMA tupla;
● add(String[] item, int row);
● clear();
● del(int row);
● getCellText(int row, int col);
● setCellText(int row, int col, Strint text);
● getItem(int index); - retorna a linha toda;
● getItemsVector();
● getCheckedRows(); - retorna um IntVector;
● int getSelectedIndex();
78. Controle básico: Grid
● Métodos:
● String[] getSelectedItem();
● isChecked:(int lineIndex);
● setChecked(int row, boolean check);
● replace(String[] item, int row);
● setSelectedRow(int line);
● size(); - retorna o número de linhas;
● setColumnEditable(int col, boolean editable);
● setColumnChoices(int col, String[] choices); - Habilita
um CheclBox com possíveis valores;
● setCellController(Grid.CellController cc);
79. Controle básico: Grid
● Métodos da classe CellControler:
● Color getBackColor(int row, int col);
● Color getForeColor(int row, int col);
● boolean isEnabled(int row, int col);
● String[] getChoices(int row, int col);
● Obs: Usando o CellControler o desenho do Grid
ficará mais lento;
● Atributos:
● boldCheck (apenas para alta resoluções);
● canClickSelectAll;
● disableSort;
● enabledColumnResize;
● oldCellText;
81. A classe Window
● Já sabemos a utilidade da MainWindow;
● Esta, pode chamar uma janela (Window), que pode chamar
outra e assim sucessivamente;
● Todas serão modal, porém, apenas a última (topMost) poderá
receber eventos e não se pode alternar para a janela anterior
sem antes fechar a atual;
● Como Window estende Control, então você não pode adicionar
a um Container uma janela;
● Para exibir uma janela, você pode chamar os métodos:
● popup;
● popupNonBlocking;
82. A classe Window
● Recursos:
● setTitle;
● setBorderStyle, valores válidos:
– NO_BORDER; RECT_BORDER; ROUND_BORDER;
TAB_BORDER; TAB_ONLY_BORDER;
● Janelas podem ser movidas pela tela;
● E se eu não quiser isso? (makeUnmovable);
● Os métodos getPreferredWidth (e height) são
mecanismos especiais da classe Window;
● Eles retornam o valor mínimo necessário para uma
correta exibição da janela;
83. A classe Window
● Métodos:
● onClickOutside(int x, int y);
– Temos duas opções de manuplação:
● Retornar true e tratar o erro;
● Retornar false e setar true em beepIfOut;
● onPopup();
● postPopup();
● onUnpop();
● postUnpop();
85. Interfaces de Diálogos
● São chamadas quando há uma
mensagem informativa ou uma requisição
específica de entrada;
● São sub-classes de Window;
● Não são mostradas automaticamente;
● Seguem as mesmas regras anteriores;
● Existem classes prontas para
determinadas tarefas, tais como:
● Mensagens, datas, números, ...
86. Interface de Diálogos:
MessageBox
● Diálogo simples para mostrar um texto
com alguns botões personalizáveis (Yes/
No, Ok/Cancel, Save/Discard/Cancel);
● Possui 3 construtores:
● String title, String msg;
● String title, String text, String[]
buttonCaptions;
● String title, String text, String[]
buttonCaptions, int gap, int insideGap;
87. Interface de Diálogos:
MessageBox
● Possui apenas 3
métodos:
● getPressedButtonIndex
()
– Inicia com ZERO;
– Se retornar -1 a janela
foi fechada;
● setTextAlignment(int
align)
– LEFT, CENTER
(default), RIGHT;
● setUnpopDelay(int
unpopDelay);
– Em milisegundos;
88. Interface de Diálogos:
InputBox
● Diálogo simples usado para capturar uma entrada
(texto) de um usuário;
● É contido, basicamente, pelo um Label e um Edit;
● Se comporta como um Edit;
● É posicionado no centro da tela e o Edit recebe o
foco automático;
● Possui 2 construtores:
● (String title, String text, String defaultValue);
– Cria com 2 botões padrões: Ok e Cancel;
● (String title, String text, String defaultValue, String[]
buttonCaptions);
90. Interface de Diálogos:
KeyboardBox
● Teclado virtual para dispositivos
touchscreen;
● Seu construtor não recebe
argumento;
● Não possui nenhum método;
● Ora bolas então como usá-lo?
● Quando ele é exibido, ele pega
uma referência à Window
topMost, fixa o foco para um Edit
e por fim, devolve para o “target”;
91. Interface de Diálogos:
CalculatorBox
● Uma caixa prontinha com uma
calculadora básica com dois
operandos, o resultado e algumas
opções de operadores;
● Possui apenas o construtor padrão
que:
● Limpa os dados da calculadora;
● Pega o valor do controle que iniciou
(edit) a chamada e adiciona ao
operador 1;
● Pode ser usado o método popup();
92. Interface de Diálogos:
CalendarBox
● Mostra um pequeno calendário;
● É mostrado com o dia atual por
default;
● Quando o dia é selecionado o
controle é fechado;
● Possui apenas o construtor padrão,
mas existem os seguintes métodos:
● getSelectedDate();
● setSelectedDate(Date d);
● Pode ser usado o método popup();
93. Imagens
● Constituem imagens retangulares;
● O TC suporta imagens de 24bpp;
● Apenas o formato PNG e JPEG;
● Porém, podemos usar o GIF e BMP que a TCMV
converte automaticamente;
● Imagens NÃO podem ser adicionadas diretamente
em um Container, pois NÃO são controles;
● Então como exibir?
● Existem duas formas:
– ImageControl;
– Button;
95. Assim...
● Estamos praticamente aptos a criar nossa primeira aplicação
de verdade;
● Eis algumas opções:
● Mini-agenda (pessoal);
● Gerenciamento de plantil de rosas (agrícola);
● Gerenciamento de vendas (comercial);
● Controle de custos para viagens (pessoal e comercial);
● Comanda eletrônica p/ restaurantes(comercial);
● Controle de irrigação de lotes(agrícola);
● Carrinho eletrônico p/ supermercados (empresarial);
● Que tal?
96. Classes utilitárias
● Podemos encontrar nestes pacotes (util e
sys) os seguintes recursos:
● Manipulação de Datas e Horas;
● Geração de números aleatórios;
● Estrutura de dados;
● Loggin;
● Conversões;
97. O pacote util: manipulação de data
● Manipula o calendário Gregoriano com o intervalo
de 1/1/1000 até 31/12/2999.
● Constantes:
● Date.JANUARY ... Date.DECEMBER;
● Date.SUNDAY ... Date.SATURDAY;
● Possui 6 construtores:
● Date();
● Date(int sentDay, int sentMonth, int sentYear);
● Date(String strDate);
98. O pacote util: manipulação de data
● Métodos:
● advance(int numberDays);
– Caso o parâmetro seja negativo ele faz o retrocesso;
● advanceMonth();
● advanceWeek();
● setToday();
● Comparação entre objetos Date:
● isAfter(Date sentDate);
● isBefore(Date sentDate);
● equals(Object sentDate);
● E muito mais ...
99. O pacote util: a classe Vector
● Implementa um array dinâmico de objetos;
● Não se pode acessar os elementos
diretamente, usa-se os métodos
encapsulados;
● Por questões de performance, o TC
implementa os atributos como public;
● Todavia, JAMAIS manipule inserção, remoção
e redimensionamento do array (garantia de
integridade);
● Porém, pode se usar getter e setter;
100. O pacote util: a classe Vector
● Construtores:
● Vector() : tamanho default de 8;
● Vector(int size) : size >= 0;
● Vector(Object[] startingWith);
● Métodos
● De adição:
– addElement(Object obj);
– insertElementAt(Object obj, int index);
● De Remoção:
– removeElement(Object obj);
– removeElementAt(int index);
– removeAllElements();
101. O pacote util: a classe Vector
● De Indexação:
– indexOf(Object obj, int startIndex);
– indexOf(Object obj);
– Retornam -1 se o objeto não for encontrado;
● Outros métodos:
● isEmpty();
● size();
● setSize(int newSize);
● qsort();
● toObjectArray();
● Um Vector pode ser usado como um Pilha:
● push(Object obj);
● pop();
● peek(); - retorna o objeto sem removê-lo;
102. O pacote util: a classe IntVector
● Idem ao anterior, com a diferença que agora
teremos um vetor de números inteiros;
● Construtores:
● IntVector();
● IntVector(int size);
● IntVector(int[] items);
● Os métodos são exatamente os mesmos,
apenas alterando o parâmetro que agora
sempre será int;
● O métodos toObjectArray agora é
toIntArray();
103. O pacote util: a classe Hashtable
● Implementa uma tabela hash com chaves
e valores;
● Possui 2 construtores:
● Hashtable(int initialCapacity);
● Hashtable(String res);
– Constrói uma tabela hash com os elementos da String;
● Métodos de inserção:
● put(Object key, Object value);
● put(int hash, Object value);
● Para saber se um chave já existe, use:
exists(Object key);
104. O pacote util: a classe Hashtable
● Métodos para retirar um elemento:
● get(Object key);
● get(int hash);
● Métodos para retornar todos os valores:
● Vector getKeys();
● Vector getValues();
● Vector getKeyValuePairs(String separator);
– Retorna o conjunto: key + separador + valores;
● Mais métodos:
● size(): retorna o número de chaves;
● remove(Object key);
● clear(): limpa todas as entradas da tabela;
105. O pacote util: a classe IntHashtable
● Idem ao anterior, com a diferença que
agora teremos uma tabela hash de
números inteiros;
● Os métodos são exatamente os
mesmos, apenas alterando o
parâmetro que agora sempre será int;
106. O pacote util: a classe Random
● É uma operação linear para gerar
números aleatórios no intervalo de
[0,231];
● O intervalo não é grande, porém sua
utilização é rápida e usa pouca
memória;
● Construtores:
● Random();
● Random(int seed);
– Seed possui valor absoluto;
107. O pacote util: a classe Random
● A classe possui apenas 4 métodos:
● nextInt(int n);
● nextDouble();
● between(int s, int e);
● between(char s, char e);
109. O pacote sys: a classe Time
● Especifica uma data e hora;
● O ano possui 4 dígitos e a hora usa
notação de 24 horas com a notação
padrão internacional;
● Também pode ser referido ao tempo militar e
astronômico;
● Por questões de performance, seus
atributos são públicos;
110. O pacote sys: a classe Time
● Campos e faixas:
● Ano: 4 dígitos;
● Mês: de 1 a 12;
● Dia: de 1 a último dia do mês especificado;
● Hora: de 0 a 23;
● Minutos: de 0 a 59;
● Segundos: de 0 a 59;
● Milisegundos: de 0 a 999;
111. O pacote sys: a classe Time
● Construtores:
● Time(); - data e hora atual;
● Time(int year, int month, int day, int hour, int
minute, int second, int millis);
● Time(long t);
– Formato: YYYYMMDDHHMMSS
● Time(String iso8601);
– Formato: YYYYMMDDTHH:MM:SS;
112. O pacote sys: a classe Time
● Métodos:
● De comparação: equals(Object o);
● getTimeLong();
● toIso8601();
● toString();
113. O pacote sys: a classe
Convert
● Contém métodos para conversão de objetos e tipos
básicos;
● É uma classe Final e seus métodos e atributos são
estáticos;
● Conversões entre Strings e Tipos Básicos:
● toDouble(String s);
● toInt(String s);
● toLong(String s);
● toLong(String s, int radix);
● toString(boolean b);
● toString(char c);
● toString(double d);
114. O pacote sys: a classe
Convert
● toString(double val, int decimalCount);
● toString(int i);
● toString(long l);
● toString(long i, int radix);
● toString(String doubleValue, int n);
● unsigned2hex(int b, int places);
● Caracteres, Strings e StringBuffers;
● appendPath(String path1, String path2);
● insertAt(StringBuffer sb, int pos, char c);
● numberOf(String s, char c);
● replace(String source, String from, String to);
● toLowerCase(char c);
● toUpperCase(char c);
115. O pacote sys: a classe
Convert
● Arrays:
● cloneStringArray(String[] strs);
● toStringArray(Object[] objs);
● detectSortType(Object item);
– Constantes provenientes da ordenação de Arrays usando o
Quick Sort:
● SORT_AUTODETECT;
● SORT_OBJECT;
● SORT_STRING;
● SORT_INT;
● SORT_DOUBLE;
● SORT_DATE;
● SORT_COMPARABLE;
● SORT_STRING_NOCASE;
116. O pacote sys: a classe
Convert
● Ordenação:
– qsort(Object[] items, int first, int last);
– qsort(Object[] items, int first, int last, int sortType);
– qsort(Object[] items, int first, int last, int sortType,
boolean ascending);
● Outras conversões:
● chars2int(String fourChars);
● int2chars(int i);
118. O Litebase
● É um “SGDB” para TotalCross;
● Usa a linguagem SQL para manipulação e criação
de dados (DDL e DML);
● Está contido no pacote: litebase.*;
● É suportado em TODAS as plataformas do TC;
● Suporte a múltiplas linguagens:
● LitebaseConnection.setLanguage
(LitebaseConnection.LANGUAGE_PT);
● Não esqueça de adicionado à sua biblioteca
personalizada no Eclipse!
119. Limitações e uso
● O nome da tabela é limitado em 23
caracteres;
● Pode-se criar acima 99 índices;
● Índices usados durante uma avaliação da
cláusula where:
● and; or; like ‘a%’;
● Não suportados:
– like '%a' (ends with); like '%a%' (index of);
– ( ), and; not.
120. Limitações e uso
● Funções de agregação:
● max, min, avg, sum, count e order by;
● O Join é suportado;
● Exceto: Inner, Left e Right;
● Valores nulos e default são suportados;
● BLOBs são suportados;
● Varchar também;
● Tente não usar o * nos selects;
121. Limitações e uso
● É possível armazenar usando o memory
card;
● É possível usar multi-threads para várias
conexões com o banco;
● No entanto, isso NÃO é recomendado;
● Existem várias palavras reservadas e
funções!
● Consulte o manual e “Mãos a Obra”;
122. Tipos de dados
● Short: Java short [-32768 +32767];
● INT: Java int [-2.147.483.648 +2.147.483.647]
● LONG: Java long [-9.223.372.036.854.775.808 … ]
● FLOAT: Java float;
● DOUBLE: Java double;
● CHAR: Java char;
● CHAR NOCASE;
● VARCHAR;
● DATE;
● DATETIME;
● BLOB;
123. Entendendo seu funcionamento...
● 1º. Criar o driver de conexão:
LitebaseConnection driver = LitebaseConnection.getInstance("Test");
● 2º. Criar uma tabela com seus índices:
try
{
driver.execute("CREATE TABLE TBTeste (id int, valorD double, valorI
int, name varchar)");
driver.execute("CREATE INDEX idx_name ON TBTeste(id)");
} catch (AlreadyCreatedException e){ }
124. Entendendo seu funcionamento...
● 3º. Inserir valores:
driver.executeUpdate("INSERT INTO TBTeste VALUES (1, 30.0, 31)");
driver.executeUpdate("INSERT INTO TBTeste VALUES (2, 99.8, 22)");
● 4º. Recuperando valores:
...
ResultSet rs = driver.executeQuery("SELECT id, valorD, name FROM
TBTeste WHERE valorI >= 20");
if (rs.next()){
String name = rs.getString("name");
double salary = rs.getDouble(2);
...
} // if
rs.close();