Objetivos da disciplina - PDF
Download "Objetivos da disciplina"
Arthur Azenha Correia
1 Universidade Federal do Maranhão UFMA Campus do Bacanga São Luís Desenvolvimento de Sistemas de Software para Sistemas Embarcados Dr. Denivaldo Lopes Ano: novembro, Objetivos da disciplina formar profissionais capazes de desenvolver sistemas computacionais para sistemas embarcados; coordenar projetos baseados em sistemas de software para sistemas embarcados. Habilitar profissionais para empregar modernas ferramentas de computação como meio de apoio a realização de tarefas baseadas em sistemas embarcados. 2
2 Sistemas de Software para Sistemas Embarcados: Várias utilizações de Sistemas de Software p/ sistemas embarcados na engenharia: Central de processamento de automóveis, aviões e outros meios de transporte; Eletrodomésticos; Telefones inteligentes (smart phones), PDAs, etc. Telemetria de linhas de transmissão de energia elétrica. Sistemas de supervisão em geral. Integração entre os sistemas computacionais de diversas plantas. 3 Conteúdo Programático 1.Introdução aos sistemas embarcados. 1.1 Aplicação na área de controle. 1.2 Aplicação na área de sistemas de potência. 1.3 Dispositivos móveis. 1.4 Requisitos para desenvolvimento de software para sistemas embarcados. 2. Introdução a Programação Orientada a Objetos. 2.1 Conceitos da orientação à objetos: Classe, Atributos, Métodos, Objeto. 4
3 Conteúdo Programático 3. Linguagem Java. 3.1 Primeiro programa em Java: HelloWorld 3.2 Aritmética em programas Java 3.3 Operadores relacionais e lógicos 3.4 Classes, objetos, métodos e variáveis de instância e construtores 3.5 Instruções de controle (if...else, while, for, do...while, switch, break e continue) 3.6 Herança 3.7 Programando com Threads 3.8 Programação em rede com Java: Sockets 5 Conteúdo Programático 4. Java 2 Platform, Micro Edition (J2ME) 4.1 Conceitos básicos da arquitetura de J2ME 4.2 Introdução a K Máquina Virtual (KVM) 5. Metas, Requisitos e Escopo de J2ME. 6. Arquitetura de alto nível e Segurança 7. Configuração de Dispositivos com Conexão Limitada. 8. Biblioteca CLDC. 6
4 Conteúdo Programático 9. Desenvolvimento de software para dispositivos móveis. 10. Modelo de aplicação MIDlet. 11. MIDP: 11.1 Interface com o usuário 11.2 Comunicação em rede Persistência: 12. Aplicações 12.1 Telemetria via Web 12.2 Software para celulares 7 Metodologia Aulas expositivas e discussões em classe. Estudo da plataforma J2ME (Java Micro Edition) para exemplificar o desenvolvimento de sistemas de software. Estudos de caso para exemplificar a utilização J2ME. Os alunos serão orientados no desenvolvimento de aplicações baseadas em J2ME. Pesquisa de assuntos avançados. Trabalhos individuais para sedimentar a aprendizagem. 8
5 Cronograma de Aulas, Trabalhos e Avaliações Mês Novembro Dezembro Janeiro Fevereiro Março Dias da disciplina 16, 21, 23, 28, 30 5, 7, 12, 14, 19, 21 2, 4, 9, 11, 16, 18, 23, 25, 30 1, 6, 8, 15, 22, 27 1, 6, 13, 15 Prova escrita Apresentação de trabalho Reposição Final 2 horários por dia : horários 6 e 7 17 de março término do semestre letivo BIBLIOGRAFIA: Roger Riggs, Antero Taivalsaari, Jim Van Peursem, Programming Wireless Devices With the Java Platform: Micro Edition, Addison Wesley Publishing Company, 2003,ISBN: Cynthia Bloch, Annette Wagner, MIDP Style Guide for the Java 2 Platform, Micro Edition, Addison Wesley Professional, David Fox, Roman Verhosek, Micro Java Game Development, Addison Wesley Professional, Kim Topley, J2ME in a Nutshell,O'Reilly, Qusay Mahmoud, Wireless Java, O'Reilly,
6 1.Introdução aos sistemas embarcados. 1.1 Aplicação na área de controle. 1.2 Aplicação na área de sistemas de potência. 1.3 Dispositivos móveis. 1.4 Requisitos para desenvolvimento de software para sistemas embarcados Introdução aos sistemas embarcados Um sistema embarcado pode ser definido como um sistema de propósito específico no qual um computador é encapsulado pelo dispositivo que ele controla; Os recursos computacionais são limitados assim como os recursos de armazenamento. Geralmente usam Firmware, isto é, os programas são armazenadas em ROM (Read- Only Memory) ou Memórias Flash. 12
7 1.Introdução aos sistemas embarcados Características: Diferentemente de PCs (Personal Computer), os sistemas embarcados possuem poucas tarefas pré-definidas; Pouco poder de processamento; Pouco memória de armazenamento; Interface limitada com o usuário; 13 1.Introdução aos sistemas embarcados Exemplos de utilização: Automóveis (central eletrônica); Aeronaves (piloto automático); Trens; Veículos espaciais; Câmeras fotográficas; Telefones celulares; PDAS; Robôs; Brinquedos; 14
8 1.Introdução aos sistemas embarcados Exemplos de utilização: 15 1.Introdução aos sistemas embarcados Exemplos de utilização: Controle de vôo Posicionamento Navegação Comunicação Segurança Fonte: Dominique Potier and Sylvain Prudhomme, Embedded Systems: Strategic Challenges for Systems Integrators,
9 1.Introdução aos sistemas embarcados Exemplos de utilização: TV digital - Interatividade com o usuário. Micro-ondas -Controle e programação do forno de micro-ondas. Impressoras -Leitura direta de memory cards -Interface de rede -multifuncionalidades: imprime, copia, escaneia, leitura de cartões 17 1.Introdução aos sistemas embarcados Exemplos de utilização: TV digital: SoC(System on Chip) Processor: TC90400-series Sistema Operacional MontaVista Linux Características do Processador: - 180MHz TX49/L3 64-bit MIPS RISC core with 8KB instruction cache and 8KB data cache - A unified memory system - A DDR SDRAM controller - Flash memory support 18
10 1.Introdução aos sistemas embarcados Exemplos de utilização: SmartPhones Motorola A1200 smartphone Características: - Processador Intel XScale PXA270; - Sistema Operacional: MontaVista Linux -Banda de operação do telefone GSM/EDGE 850/1800/1900MHz -Bluetooth -Câmera 1.3-megapixel -Suporte a J2ME Fonte: https://opensource.motorola.com 19 1.Introdução aos sistemas embarcados Constato: Todos os objetos e máquinas de nossa sociedade estão sendo transformadas em um sistema embarcado. 20
11 1.Introdução aos sistemas embarcados Problema: a variedade de sistemas de hardware e sistemas operacionais (SO); Necessidade de desenvolver aplicativos para estas plataformas cujo código seja portável; Uma mesma API (Application Programming Interface) para todas as plataformas (Hardware e SO); Sistemas Operacionais: Embedded Linux, Symbian, Windows Mobile, Nokia Operating System. Processadores para SE: ARM9 NET+ARM da NetSilicon, ADSP-21xx Processors, Processador Geode da AMD, ADSP-21xx, etc Introdução aos sistemas embarcados Problema: Linguagem Assembler: Pós: Performance Contras: Sistemas grandes são difíceis de serem desenvolvidos com assembler (custo elevado); Baixo nível; Nova plataforma (hardware e sistema executivo) implica em novo programa assembler - > sem portabilidade; Conhecimento especializado da plataforma. 22
12 1.Introdução aos sistemas embarcados Soluções: Linguagem C: Pós: fornece uma linguagem de programação eficiente (performance), uma API básica e portabilidade limitada; Contras: necessidade de definir as diretivas de pré-processador em caso de desenvolvimento para múltiplas plataformas, necessidade de uma nova compilação a cada nova migração, o conjunto de bibliotecas padrão é limitado e às vezes depende da plataforma Introdução aos sistemas embarcados Linguagem Java: Pós: Independente da plataforma (Hardware e SO) portabilidade garantida (bytecodes e JVM); uma linguagem padronizada e bem especificada; introduz orientação a objeto; possui uma API uniforme e vasta (suporte a rede, concorrência, XML); novos conceitos de segurança (Sandbox); Contra: Performance de execução inferior a C, C++(diretamente executável). JVM(Java Virtual Machine) 24
13 1.Introdução aos sistemas embarcados Dispositivos embarcados (conectados por firewire, usb, rede, wireless, etc) Fonte: CDC: JAVA PLATFORM TECHNOLOGY FOR CONNECTED DEVICES Java Platform, Micro Edition White Paper June Introdução a Programação Orientada a Objetos. 2.1 Conceitos da orientação à objetos: - Classe; - Atributos; - Métodos; - Objeto. 26
14 Conceitos da orientação à objetos Uma linguagem orientada à objetos. O que é um objeto? De uma forma geral, podemos ver um objeto um tanto que uma abstração do mundo real. Uma abordagem usando objeto tem como finalidade permitir a modelagem das propriedades estáticas e dinâmicas do ambiente no qual estão definidas as necessidades, denominadas de domínio do problema. 27 Conceitos da orientação à objetos A orientação à objeto se baseia em cinco conceitos básicos: Objeto; Mensagens; Classe; Generalização; Polimorfismo. 28
15 Conceitos da orientação à objetos Objeto Um objeto é uma unidade atômica formada da união de um estado e de comportamento. Um objeto fornece uma relação de coesão interna muito forte e um fraco acoplamento com o exterior. Os objetos se comunicam entre si através de troca de mensagens. 29 Conceitos da orientação à objetos Objeto Cada objeto contém um estado interno que é próprio dele mesmo e um comportamento visível pelos outros objetos. Um objeto também tem uma identidade que o diferencia dos outros objetos. A identidade permite distinguir todo objeto de forma não ambígua, e isto independe de seu estado. Objeto = Estado + Comportamento + identidade 30
16 Conceitos da orientação à objetos Objeto A identidade é um conceito, não se representa de uma maneira específica. Cada objeto possui uma identidade atribuída de maneira implícita no momento da criação do objeto e nunca é modificada. :Um objeto A Estados de A Mensagem :Um objeto B Estados de B 31 Conceitos da orientação à objetos Objeto: exemplo Pousar [Em vôo] a1:avião t1:torre de controle Estados Decolar [No solo] a2:avião 32
17 Conceitos da orientação à objetos Classe O mundo real é composto de inúmeros objetos em interação. Os objetos são geralmente muito complexos para serem compreendidos em sua integridade. Para reduzir a complexidade, ou para gerenciála, o ser humana aprendeu a agrupar os elementos que se assemelham e a distinguir as estruturas de mais alto nível de abstração, 33 excluindo os detalhes inúteis. Conceitos da orientação à objetos Classe Uma classe descreve um domínio de definição de objetos. Cada objeto é originado de uma classe. As generalidades são contidas na classe e as particularidades são contidas nos objetos. O processo de criação de um objeto à partir de uma classe é chamado de instanciação. 34
18 Conceitos da orientação à objetos Classe: representação Classe A atributo1: TipoAtributo atributo2: TipoAtributo atributon: TipoAtributo método1(parâmetro:tipoparâmetro):tiporetorno método2(parâmetro:tipoparâmetro):tiporetorno métodon(parâmetro:tipoparâmetro):tiporetorno 35 Conceitos da orientação à objetos Classe e Objeto Cachorro Raça: String Cor: String Peso: Float Altura:Float Idade:Integer <<Instância de>> spike:cachorro Raça= Pastor Alemão Cor= Preto e marrom Peso= 6,5 Altura=0,8 Idade=8 36
19 Conceitos da orientação à objetos Classe e Objeto Abstração Objetos Tipos de dados abstratos Funções Mnemônicos Códigos Binários Facilidade de Programação 37 Conceitos da orientação à objetos Classe: Visibilidade de atributos e métodos O nível de visibilidade pode ser: Público: atributos e métodos são visíveis e acessíveis à partir de métodos da própria classe ou de uma outra classe. Privado: os atributos privados somente podem ser acessados por métodos da classe. Da mesma forma, os métodos privados somente podem ser acessados por outros métodos da própria classe. Protegido: os atributos e métodos podem ser vistos e acessados somente por métodos da própria classe ou à partir de classes derivadas. 38
20 Conceitos da orientação à objetos Atributos privados somente podem ser acessados e modificados por métodos da própria classe. Classe: representação de visibilidade Representação: Exemplo: Classe + atributo público # atributo protegido - atributo privado + método público( ) # método protegido( ) - método privado( ) Métodos públicos podem ser chamados por métodos de outra classe. -ParteReal:Float -ParteImaginária:Float NúmeroComplexo +adição(num1:númerocomplexo):númerocomplexo +sub(num1:númerocomplexo):númerocomplexo +mult(num1:númerocomplexo):númerocomplexo +div(num1:númerocomplexo):númerocomplexo +getreal():float +getimag():float 39 Conceitos da orientação à objetos Generalização. A generalização consiste em capturar os elementos comuns (atributos e operações) de um conjunto de classes em uma classe mais genérica, chamada de superclasse. As classes são organizadas segundo uma hierarquia que pode ser vista como uma árvore: uma superclasse é uma abstração de suas sub-classes. 40
21 Conceitos da orientação à objetos Generalização: exemplo. Abstrações mais gerais Veículo Veículo Terrestre Veículo Aéreo Carro Caminhão Moto Avião Helicóptero Extensão pela especialização 41 Conceitos da orientação à objetos Generalização: exemplo. Abstrações mais gerais Animal Carnívoro Herbívoro Leão Onça Coiote Ovelha Cavalo Extensão pela especialização A generalização e a especialização são dois pontos de vista antagônicos do conceito de classificação. 42
22 Conceitos da orientação à objetos Generalização: exemplo. SuperClasse Classe mais geral SubClasse Classe mais especializada A especialização é a base para a programação por extensão e para a reutilização. 43 Conceitos da orientação à objetos Generalização: características. A A A Proibido A generalização não é reflexiva e nem é simétrica. A generalização é transitiva. B Proibido C B Transitividade 44
23 Conceitos da orientação à objetos Herança: permite a construção de uma classe à partir de uma ou várias outras classes, compartilhando atributos e operações, e formando uma hierarquia de classes. As classes filhas herdam as características das classes pais. A -attra1 : Double -attra2 : Integer +attra3 : String #attra4 : Double +geta1() : Double +geta2() : Integer B -attrb1 : Boolean -attrb2 : Long +getb1() : Boolean +getb2() : Boolean 45 Conceitos da orientação à objetos Colisões de nomes na herança. 46
24 Conceitos da orientação à objetos Polimorfismo: descreve a característica de um elemento que pode ter várias formas. O polimorfismo de operação permite fazer chamadas de uma operação de diversas formas. Não confundir com sobrecarga de métodos. 47 Conceitos da orientação à objetos Sobrecarga de métodos: permite que métodos compartilhem o mesmo nome, mas com diferentes parâmetros e/ou retorno. 48
25 Introdução a linguagem de programação Java Conceitos da orientação à objetos: Classe, Atributos, Métodos, Objeto Primeiro programa em Java: HelloWorld Aritmética em programas Java Operadores relacionais e lógicos Classes, objetos, métodos e variáveis de instância e construtores Instruções de controle (if...else, while, for, do...while, switch, break e continue) Herança Programando com Threads Programação em rede com Java: Sockets 49 Tutoriais sobre Java Trail: Learning the Java Language. Disponível em: C.html#data 50
26 Introdução a Java Em 1991, a Sun Microsystems financiou um projeto de pesquisa corporativa interno com o codinome Green (Patrick Naughton, Mike Sheridan, e James Gosling). No projeto Green, uma linguagem baseada em C++ foi desenvolvida e denominada de Oak. Mais tarde, esta linguagem foi introduzida na Web e se passou a chamar Java. Em 1995, Java despertou o interesse da comunidade, pois aprimorava as funcionalidades de servidores Web, possibilitando a criação de páginas Web dinâmicas. 51 Introdução a Java Java é um ambiente de execução presente em: web browsers; Mainframes; SOs; celulares; palmtops; cartões inteligentes, entre outros. 52
27 Características: Introdução a Java Orientação a objeto baseada no modelo Smalltalk e Simula 67. Portabilidade - independência de plataforma - "write once run anywhere"; Recursos de Rede suporte para Socket e TCP/IP. Segurança através do Sandbox. Bytecode interpretado código executado pela JVM (Java Virtual Machine). Sintaxe similar a Linguagem C/C++. Facilidades de Internacionalização: através de caracteres Unicode. 53 Características: Simplicidade na especificação (JVM): qualquer empresa pode implementar a especificação da JVM. Um vasto conjunto de bibliotecas (APIs): bibliotecas disponíveis com o J2SDK. Suporte à programação distribuída e multitarefa: suporta threads, monitor, e chamada remota de procedimento. Alocação/Desalocação dynâmica de memória: através do Garbage Collector (Coletor de lixo) a memória não mais utilizada pode ser recuperada e usada outra vez pelo SO ou pela própria JVM. Carga Dinâmica de Código: o código pode ser carregado segundo a demanda. Introdução a Java 54
28 Introdução a Java 55 Introdução a Java Java está disponível em 3 edições: Java 2 Standard Edition (J2SE): é a tecnologia Java para computadores pessoais, notebooks e arquiteturas com elevado poder de processamento. J2SE possui duas divisões: Java Standard Development Kit (JSDK): é constuído por um conjunto de ferramentas (compiladores, debugger,...) que suportam a criação de programas Java. Java Runtime Edition (JRE): contém o necessário para a execução dos programas Java. Java 2 Micro Edition (J2ME): é a tecnologia Java para dispositíveis móveis com limitação de processamento e memória. Pode ser encontratado em duas formas: Connected Limited Device Configuration (CLDC): destinado a celulares, smartphones e dispositivos limitados. Connected Device Configuration (CDC): destinado para Palmtops, PocketPCs e dispositivos com maior poder de processamento e memória. Java 2 Enterprise Edition (J2EE): é a tecnologia Java para aplicações corporativas (inclui Java Enterprise Beans). 56
29 Introdução a Java Fonte: 57 Introdução a Java Um ambiente de desenvolvimento Java típico. 58
30 Primeiro programa em Java: HelloWorld public class HelloWorld { // método principal que inicia a execução do aplicativo Java public static void main(string[] args) { // Imprime uma mensagem no console System.out.println("Hello World! I am a program in Java...!") 59 Primeiro programa em Java: HelloWorld 60
31 Conhecendo o compilador Java 61 Exemplo 2 import java.util.scanner; // importa a classe Scanner do pacote java.util // Classe principal public class HelloWorld2 { // método principal que inicia a execução do aplicativo Java public static void main(string[] args) { //declação de variáveis // cria variavel para armazenar o nome do usuário String username="none "; // cria variavel para armazenar a idade do usuário int userage=0; // cria um objeto da classe Scanner para ler o teclado Scanner inputkeyboard = new Scanner(System.in); // Imprime uma mensagem no console System.out.println("Hello World! I am a program in Java...!"); System.out.println("What is your name?"); // Ler uma string de caracteres do teclado username = inputkeyboard.nextline(); // Imprime o nome do usuário usando formatação System.out.printf("Hi %s",username); // Imprime uma mensagem no console System.out.println("\nHow old are you?"); // Ler um número inteiro do console userage = inputkeyboard.nextint(); // Imprime uma mensagem no console com formatação, %s string e %d número inteiro System.out.printf("%s is %d years old.",username,userage); 62
32 Tipos de dados Primitivos Tipos de Dados Primitivos Palavra-chaave Descrição Tamanho/Formato Inteiros byte Byte 8-bit complemento de dois short Short integer 16-bit complemento de dois int Integer 32-bit complemento de dois long Long integer 64-bit complemento de dois Números reais float Ponto flutuante precisão simples 32-bit IEEE 754 double Ponto flutuante precisão dupla 64-bit IEEE 754 Outros char Um único caractere 16-bit caractere Unicode boolean Um valor lógico (true ou false) true ou false 63 Exemplo 3 /* * Programa que retorna o valor máximo para tipos de dados simples * Fonte: ex5/maxvariablesdemo.java */ public class MaxVariablesDemo { public static void main(string args[]) { //integers byte largestbyte = Byte.MAX_VALUE; short largestshort = Short.MAX_VALUE; int largestinteger = Integer.MAX_VALUE; long largestlong = Long.MAX_VALUE; //real numbers float largestfloat = Float.MAX_VALUE; double largestdouble = Double.MAX_VALUE; //other primitive types char achar = 'S'; boolean aboolean = true; //Display them all. System.out.println("The largest byte value is " + largestbyte + "."); 64
33 Exemplo 3 System.out.println("The largest short value is " + largestshort + "."); System.out.println("The largest integer value is " + largestinteger + "."); System.out.println("The largest long value is " + largestlong + "."); System.out.println("The largest float value is " + largestfloat + "."); System.out.println("The largest double value is " + largestdouble + "."); if (Character.isUpperCase(aChar)) { System.out.println("The character " + achar + " is uppercase."); else { System.out.println("The character " + achar + " is lowercase."); System.out.println("The value of aboolean is " + aboolean + "."); 65 Aritmética em programas Java Operadores Aritméticos Binários Operador Uso Descrição + op1 + op2 Adiciona op1 e op2; também usado para concatenar - op1 - op2 Subtrai op2 de op1 * op1 * op2 Multiplica op1 por op2 / op1 / op2 Divide op1 por op2 % op1 % op2 Computa o resto da divisão de op1 por op2 66
34 Aritmética em programas Java: Exemplo4 /* Fonte: icdemo.java */ public class ArithmeticDemo { public static void main(string[] args) { //a few numbers int i = 37; int j = 42; double x = ; double y = 7.22; System.out.println("Variable values..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" x = " + x); System.out.println(" y = " + y); //adding numbers System.out.println("Adding..."); System.out.println(" i + j = " + (i + j)); System.out.println(" x + y = " + (x + y)); //subtracting numbers System.out.println("Subtracting..."); System.out.println(" i - j = " + (i - j)); System.out.println(" x - y = " + (x - y)); 67 Aritmética em programas Java: Exemplo4 //multiplying numbers System.out.println("Multiplying..."); System.out.println(" i * j = " + (i * j)); System.out.println(" x * y = " + (x * y)); //dividing numbers System.out.println("Dividing..."); System.out.println(" i / j = " + (i / j)); System.out.println(" x / y = " + (x / y)); //computing the remainder resulting from dividing numbers System.out.println("Computing the remainder..."); System.out.println(" i % j = " + (i % j)); System.out.println(" x % y = " + (x % y)); //mixing types System.out.println("Mixing types..."); System.out.println(" j + y = " + (j + y)); System.out.println(" i * x = " + (i * x)); 68
35 Operadores relacionais Operadores Relacionais Operador Uso Descrição > op1 > op2 Retorna true se op1 é maior do que op2 >= op1 >= op2 Retorna true se op1 é maior ou igual à op2 < op1 < op2 Retorna true se op1 é menor do que op2 <= op1 <= op2 Retorna true se op1 é menor ou igual à op2 == op1 == op2 Retorna true se op1 e op2 são iguais!= op1!= op2 Retorna true se op1 e op2 não são iguais 69 Operadores Condicionais Ope radores Condicionais Operador Uso Descrição && op1 && op2 Retorna true se op1 e op2 são ambos verdadeiros; condicionalmente avalia op2 op1 op2 Retorna verdadeiro se op1 ou op2 é verdadeiro; condicionalmente avalia op2!!op Retorna verdadeiro se op é falso & op1 & op2 Retorna true se op1 e op2 são ambos lógicos e ambos verdadeiros; sempre avalia op1 e op2; se ambos são números, realiza operação AND bit a bit. op1 op2 Retorna verdadeiro se ambos op1 e op2 são lógicos e nenhum op1 ou op2 é verdadeiro; sempre avalia op1 e op2; se ambos operandos são números, realiza a operação ou bit a bit. ^ op1 ^ op2 Retorna verdadeiro se op1 e op2 são diferentes isto é, se um ou outro dos operandos, mas não ambos, é verdadeiro. 70
36 Operadores relacionais e condicionais: Exemplo 5 public class RelationalDemo { public static void main(string[] args) { //a few numbers int i = 37; int j = 42; int k = 42; System.out.println("Variable values..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" k = " + k); //greater than System.out.println("Greater than..."); System.out.println(" i > j is " + (i > j)); //false System.out.println(" j > i is " + (j > i)); //true System.out.println(" k > j is " + (k > j)); //false //(they are equal) //greater than or equal to System.out.println("Greater than or equal to..."); System.out.println(" i >= j is " + (i >= j)); //false System.out.println(" j >= i is " + (j >= i)); //true System.out.println(" k >= j is " + (k >= j)); //true 71 Operadores relacionais e condicionais: Exemplo 5 //less than System.out.println("Less than..."); System.out.println(" i < j is " + (i < j)); //true System.out.println(" j < i is " + (j < i)); //false System.out.println(" k < j is " + (k < j)); //false //less than or equal to System.out.println("Less than or equal to..."); System.out.println(" i <= j is " + (i <= j)); //true System.out.println(" j <= i is " + (j <= i)); //false System.out.println(" k <= j is " + (k <= j)); //true //equal to System.out.println("Equal to..."); System.out.println(" i == j is " + (i == j)); //false System.out.println(" k == j is " + (k == j)); //true //not equal to System.out.println("Not equal to..."); System.out.println(" i!= j is " + (i!= j)); //true System.out.println(" k!= j is " + (k!= j)); //false 72
37 Operadores relacionais e condicionais: Exemplo 6 import java.util.scanner; public class Aritmética { public static void main(string[] args) { //Declaração de variáveis float x1=0, x2=0, a=0, b=0, c=0, delta; // cria um objeto Scanner Scanner scannerkeyboard = new Scanner(System.in); System.out.println("Calcula as raízes de uma eq. do 2 grau"); System.out.print("Please, enter with a:"); a= scannerkeyboard.nextfloat(); System.out.print("Please, enter with b:"); b= scannerkeyboard.nextfloat(); System.out.print("Please, enter with c:"); c= scannerkeyboard.nextfloat(); //calcula o valor de delta delta = ((float)math.pow(b,2)) - (4*a*c); 73 Operadores relacionais e condicionais: Exemplo 6 /* verifica qual o tipo de raiz * delta > 0 - duas raízes reais distintas * delta = 0 - duas raízes reais e iguais * delta < 0 - raízes complexas */ if (delta == 0){ // cálculo das raízes x1= (-b - (float) Math.sqrt(delta))/(2*a); x2= (-b + (float) Math.sqrt(delta))/(2*a); // Imprime resultado System.out.printf("x1=%f x2=%f",x1,x2); else if (delta > 0 ){ // cálculo das raízes x1=(-b - (float) Math.sqrt(delta))/(2*a);; x2= (-b + (float) Math.sqrt(delta))/(2*a); // Imprime resultado System.out.printf("x1=%7.3f x2=%7.3f",x1,x2); 74
38 Operadores relacionais e condicionais: Exemplo 6 else if (delta < 0){ //declaração de variáveis float x1real, x1imag, x2real, x2imag; // cálculo das raízes complexas x1real= -b /(2*a); x1imag = -(float) Math.sqrt(-1*delta)/(2*a); // x2real = -b /(2*a); x2imag= ((float) Math.sqrt(-1*delta))/(2*a); // Imprime resultado System.out.println("\nRaizes complexas:"); System.out.printf("x1=%5.3f + %5.3fj",x1Real,x1Imag); System.out.printf("\nx2=%5.3f - %5.3fj",x2Real,x2Imag); 75 Operadores relacionais e condicionais: Exemplo 7 import java.util.scanner; public class Fatorial { public static void main(string[] args) { // cria um objeto Scanner Scanner scannerkeyboard = new Scanner(System.in); // cria um objeto FatorialCalculate FatorialCalculate fatcalculate = new FatorialCalculate(); resutaldo // variáveis para o numero do fatorail a ser calculado e o long number =0; long result=0; // pede e lê o númeor System.out.print("\nPor favor, entre um número para calcular o fatorial:"); number=scannerkeyboard.nextlong(); // chama o método fatorial de FatorialCalculate result = fatcalculate.fatorial(number); // imprime o resultado System.out.printf("\nFatorial de %d! = %d",number,result); 76
39 public class FatorialCalculate { Operadores relacionais e condicionais: Exemplo 7 // método que calcula o fatorial de forma recursiva public long fatorial (long numero) { if (numero <= 1) return 1; else return numero * fatorial(numero-1); 77 Operadores relacionais e condicionais Exercício: - Crie um programa que calcule a potência de um circuito monofásico e trifásico dado tensão, corrente e fator de potência. - Crie um programa que calcule o fator de potência dado a potência trifásica, tensão de linha e corrente. 78
40 Classes e objetos Uma classe contém a descrição dos estados e do comportamento de um objeto. Um objeto é uma instância de uma classe. O estado de um objeto é descrito pelos atributos. O comportamento é descrito pelos métodos. 79 Classes e objetos Vários objetos podem ser instâncias de uma mesma classe, mas estes objetos são distintos e podem possuir estados iguais ou diferentes. Mesmo que vários objetos tenham sido instanciado de uma mesma classe, estes objetos continuam sendo distintos, ainda que o estado seja igual. 80
41 Classes e Objetos Declaração do pacote Biblioteca usadas Declaração de classe Variáveis (atributo) Construtor Métodos package biblioteca; import java.util.scanner; public class Livro { private String titulolivro; private String nomeautor; private String nomeeditora; *** public Livro(String titulolivro, String nomeautor, ***) { super(); this.titulolivro = titulolivro; this.nomeautor = nomeautor; this.nomeeditora = nomeeditora; *** public void print() { System.out.println("Titulo:" + titulolivro); System.out.println("Autor:" + nomeautor); System.out.println("Editora:" + nomeeditora); public String getisbn() { return this.isbn; public void setisbn(string isbn) { this.isbn = isbn; 81 *** Variáveis (Atributos) Elementos de Declaração de Variáveis Elemento Função (Optional) Nível de acesso para a variável: Visibilidade private, public, protected static final (Optional) Declara uma variável de classe (Optional) Indica que o valor da variável não pode ser mudado transient (Optional) Indica que o valor é transiente volatile (Optional) Indica que o valor é volátil tipo nome O tipo e o nome da variável 82
42 Variáveis de Instância (Atributos) package basic; import java.util.scanner; public class MathComplex { public static void main(string[] args) { // Declaracao de variaveis simples float real, imaginario; // Declaracao de variaveis de instancia (entrada de dados) Scanner keyboard = new Scanner(System.in); // Imprime mensagem System.out.println("Operacoes sobre numeros complexos"); // Le operando 1 System.out.println("Leitura do operando 1 "); System.out.println("Entre com a parte real : "); // Ler valor do teclado real = keyboard.nextfloat(); // Imprime mensagem System.out.println("Entre com a parte imag.:"); // Ler valor do teclado imaginario = keyboard.nextfloat(); // Cria um objeto instanciado de ComplexNumber // op1 é a variavel de instancia para este objeto ComplexNumber op1 = new ComplexNumber(real, imaginario); 83 Variáveis de Instância (Atributos) // Le operando 2 System.out.println("Leitura do operando 2 "); System.out.println("Entre com a parte real : "); // Ler valor do teclado real = keyboard.nextfloat(); // Imprime mensagem System.out.println("Entre com a parte imag.:"); // Ler valor do teclado imaginario = keyboard.nextfloat(); // Cria um objeto instanciado de ComplexNumber // op1 é a variavel de instancia para este objeto ComplexNumber op2 = new ComplexNumber(real, imaginario); // Realiza calculo op1.add(op2); //Imprime o resultado System.out.println("\n\n\nResultado:"); op1.print(); 84
Universidade Federal do Maranhão UFMA Campus do Bacanga São Luís. Web Services. Dr. Denivaldo Lopes Ano: 2006.1. maio, 2006. Objetivos da disciplina
Universidade Federal do Maranhão UFMA Campus do Bacanga São Luís Web Services Dr. Denivaldo Lopes Ano: 2006.1 maio, 2006 1 Objetivos da disciplina Formar profissionais capazes de desenvolver sistemas computacionais