Baixe o app para aproveitar ainda mais
Prévia do material em texto
Java Notas de Aula Prof. André Bernardi Característica Básica � http://java.sun.com � Capacidade de execução em diferentes plataformas e sistemas operacionais, sem a necessidade de recompilação do código fonte. Subdivisões da Tecnologia Java � Java foi oficialmente apresentado em 1995 pelo consorcio Sun. � Em 1999 surge a chamada segunda edição do java na qual foram criadas as seguintes denominações: � J2ME – Java Micro Edition � J2SE – Java Standard Edition � J2EE – Java Enterprise Edition Ambiente Java Ambiente Java Java Application // Welcome1.java - A first program in Java. public class Welcome1 { // main method begins execution of Java application public static void main( String args[] ) { System.out.println("Welcome to Java Programming!"); } // end method main } // end class Welcome1 Compilação � Obter e instalar o compilador java gratuitamente na pagina da Sun � http://java.sun.com � http://java.sun.com/j2se/1.5.0/docs/api/ � javac Welcome1.java � java Welcome1 Segundo exemplo // Welcome4.java - Printing multiple lines in a dialog box // import class JOptionPane import javax.swing.JOptionPane; public class Welcome4 { // main method begins execution of Java application public static void main( String args[] ) { JOptionPane.showMessageDialog(null, "Welcome\nto\nJava\nProgramming!" ); System.exit( 0 ); // terminate application } // end method main } // end class Welcome4 Terceiro Exemplo Terceiro Exemplo Quarto Exemplo // Addition program that displays the sum of two numbers. import java.util.Scanner; // program uses class Scanner public class Addition { // main method begins execution of Java application public static void main( String args[] ) { // create Scanner to obtain input from command window Scanner input = new Scanner( System.in ); int number1; // first number to add int number2; // second number to add int sum; // sum of number1 and number2 System.out.print( "Enter first integer: " ); // prompt number1 = input.nextInt(); // read first number from user System.out.print( "Enter second integer: " ); // prompt number2 = input.nextInt(); // read second number from user sum = number1 + number2; // add numbers System.out.printf( "Sum is %d\n", sum ); // display sum } // end method main } // end class Addition Operadores Operadores Aritméticos Operadores Relacionais Operadores Operadores Lógicos Regras de precedência Palavras reservadas Estruturas de Controle Estrutura Condicional if ( studentGrade >= 60 ) System.out.println( "Passed" ); if ( studentGrade >= 60 ) System.out.println( "Passed" ); else System.out.println( "Failed" ); Estrutura while int product = 2; while ( product <= 1000 ) product = 2 * product; Estrutura for for ( int counter = 1; counter <= 10; counter++ ) g.drawLine( 10, 10, 250, counter * 10 ); Estrutura switch Estrutura do/while int counter = 1; do { g.drawOval( 110 - counter * 10, 110 - counter * 10, counter * 20, counter * 20 ); ++counter; } while ( counter <= 10 ); // end do/while Resumo das estruturas Resumo das estruturas Exercícios 1. Escreva um programa em Java que desenhe um Retângulo Na Tela, com as seguintes personalizações possíveis: � Possua largura e altura lidas pelo teclado; � Leia o caractere que vai ser usado para desenhar a borda; � Leia o caractere de preenchimento; � Pergunte ao usuário se o retângulo vai ser preenchido ou não. Como exemplo, se o programa executasse com largura = 12, altura = 5, com o caractere x para borda, o caractere . para preenchimento e o retângulo fosse preenchido, o resultado seria o mostrado abaixo: xxxxxxxxxxxx x..........x x..........x x..........x xxxxxxxxxxxx Exercícios 2. Crie um programa em Java calcular e imprimir os 20 primeiros números primos. Lembrar que um número primo é aquele que só é divisível por ele mesmo e por um. 3. Faça um aplicativo Java para calcular o fatorial de um número, digitado pelo usuário. Lembrar que : n! = 1 * 2 * ... * (n-2) * (n-1) * n; Métodos Outra denominação para “função membro” Métodos da Classe Math Métodos da Classe Math Geração de números aleatórios � Método random() da classe Math � Gera sempre valores em double na faixa 0.0 ≤ x < 1.0 � Classe Random da biblioteca java.util � Pode gerar varias formas de números aleatórios, através do uso das funções. � nextInt, nextDouble, nextFloat, nextGaussian, nextLong, nextBoolean... Geração de números aleatórios int a = (int) ( deslocamento + Math.random()*escala); � Gerar valores entre 100 e 899 int a = (int) ( 100 + Math.random()*800); � Random randomNumbers = new Random(); int a = randomNumbers.nextInt(); int a = 100 + randomNumbers.nextInt(800); Exercício 1 1. Crie um método em Java que calcule a distância D (em metros) alcançada por um míssil lançado com uma velocidade inicial V (em m/s) e um ângulo de tiro A (em graus). Sabe-se da física básica que a expressão para esse cálculo (desconsiderando o atrito do ar) é a seguinte: onde g = 9,8 m/s2g AVD )2sin(. 2 = Exercício 2 2. O comprimento do arco ABC de uma parábola é dada por , onde a é a altura da parábola e b é a distância entre A e C (veja figura acima). Implemente um programa em Java que leia os valores a e b e calcule o comprimento do arco da parábola correspondente através do uso de uma função Programação orientada a objetos � Baseada na criação de classes contendo métodos e atributos public class GradeBook { private String atributo; public void setAtributo(String a) { atributo = a; } public String getAtributo() { return atributo; } public void displayMessage() { System.out.println( “Hello World!! “ + getAtributo() ); } // end method displayMessage } // end class GradeBook Strings e Caracteres Strings e Caracteres Os objetivos deste tópico são: � Criar e manipular conjuntos de caracteres não modificáveis, objetos da classe String � Criar e manipular conjuntos de caracteres modificáveis, objetos da classe StringBuffer � Criar e manipular Objetos da classe Character � Compreender a utilização da classe StringTokenizer Classe String - Construtores String(); String( String ); String( charArray ); String( charArray, inicio, numero); String( byteArray, inicio, numero); String ( StringBuffer ); Classe StringString Métodos length, charAt, getChars long length() char charAt(posicao) void getChars(inicio, fim, charArray, inicio) Classe StringString Métodos de Comparação boolean equals(String); // true se iguais boolean equalsIgnoreCase(String); int compareTo(String);( <0, ==0, >0 ) boolean regionMatches(inicio, string, inicio, cont); // true se iguais boolean String.regionMatches(caseIgnore, inicio, string, inicio, cont); boolean String.startWith(String, offset); boolean String.endWith(String); Classe StringString Localizando caracteres e substrings int indexOf(String); int indexOf(String, inicio); int indexOf(char); int indexOf(char, inicio); int lastIndexOf(String); int lastIndexOf(String, inicio); int lastIndexOf(char ); int lastIndexOf(char, inicio); Classe StringString � Extraindo substrings String substring(indice); String substring(inicio, final); � Concatenando strings String String.concat( String ); Classe StringString Métodos Variados String replace(charFrom, charTo) String toLowerCase() String toUpperCase() String trim() String toString() char[ ] toCharArray() Classe StringBufferStringBuffer � Construtores StringBuffer(); StringBuffer(int); StringBuffer(String); StringBuffer(StringBuffer); � Métodos length, capacity StringBuffer.length(); StringBuffer.capacity(); Classe StringBufferStringBuffer StringBuffer.charAt(int); StringBuffer.setCharAt(posicao, char); StringBuffer.getChars(inicio, fim, destino, inicio); StringBuffer.reverse(); Classe StringBufferStringBuffer StringBuffer.append(Object); StringBuffer.append(String); StringBuffer.append(char); StringBuffer.append(char[]); StringBuffer.append(char[], start,end ); StringBuffer.append(int); StringBuffer.append(long); StringBuffer.append(float); StringBuffer.append(double); Classe StringBufferStringBuffer StringBuffer.insert(pos,Object); StringBuffer.insert(pos,String); StringBuffer.insert(pos,char); StringBuffer.insert(pos,charArray); StringBuffer.insert(pos,int); StringBuffer.insert(pos,long); StringBuffer.insert(pos,float); StringBuffer.insert(pos,double); StringBuffer.insert(pos,String); StringBuffer.deleteCharAt(pos); StringBuffer.delete(inicio,fim); Classe CharacterCharacter boolean Character.isDefined(char) boolean Character.isJavaIdentifierStart(char) boolean Character.isJavaIdentifierPart(char) boolean Character.isDigit(char) boolean Character.isLetter(char) boolean Character.isLetterOrDigit(char) boolean Character.isLowerCase(char) boolean Character.isUpperCase(char) boolean Character.isWhitespace(char) � Faixa de valores do char int Character.MIN_VALUE int Character.MAX_VALUE Classe StringTokenizerStringTokenizer � long StringTokenizer.countTokens() � boolean StringTokenizer.hasMoreTokens() � String StringTokenizer.nextToken() // Exemplo StringTokenizer strT; strT = new StringTokenizer (“Uma frase com cinco palavras”); while(strT.hasMoreTokens()) System.out.println(strT.nextToken()); Exercícios Graphics e Java 2D Notas de Aula Prof. André Bernardi Introdução Contexto e Objeto Graphics � O Contexto Graphics habilita o desenho em uma tela em Java � O objeto Graphics gerencia um contexto gráfico.Possui controles de fonts e cores � public void paint(Graphics g) � public void repaint( ) � public void update( Graphics g ); Controle Color Métodos da classe Color � public Color( int r, int g, int b ) � public Color( float r, float g, float b ) � public int getRed() � public int getGreen() � public int getBlue() � public Color getColor() � public void setColor( Color c ) JColorChooser � JColorChooser.showDialog( Component, “Titulo do diálogo", corInicial ) Controle Fonts � public final static int PLAIN � public final static int BOLD � public final static int ITALIC � public Font( String name, int style, int size ) � public int getStyle() � public int getSize() � public String getName() public String getFamily() � public boolean isPlain() � public boolean isBold() � public boolean isItalic() � public Font getFont() � public void setFont( Font f ) // Fig. 12.11: FontJPanel.java // exibe strings em diferentes fontes e cores. import java.awt.Font; import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; public class FontJPanel extends JPanel { // exibe Strings em diferentes fontes e cores public void paintComponent( Graphics g ) { // chama o paintConponent da superclasse super.paintComponent( g ); // fonte configurada como Serif (Times), negrito, 12 pt g.g.setFontsetFont( new ( new FontFont( "( "SerifSerif", ", FontFont.BOLD, 12 ) );.BOLD, 12 ) ); g.g.drawStringdrawString( "( "SerifSerif 12 12 pointpoint boldbold.", 20, 50 );.", 20, 50 ); // fonte monoespaçada (Courier), 24 pt itálico g.setFontsetFont( new Font( "Monospaced", Font.ITALIC, 24 ) ); g.drawStringdrawString( "Monospaced 24 point italic.", 20, 70 ); // fonte SansSerif (Helvetica), simples, 14 pt g.setFontsetFont( new Font( "SansSerif", Font.PLAIN, 14 ) ); g.drawStringdrawString( "SansSerif 14 point plain.", 20, 90 ); // fonte Serif (Times), 18 pt negrito/itálico g.setColorsetColor( Color.RED ); g.setFontsetFont( new Font( "Serif", Font.BOLD + Font.ITALIC, 18 ) ); g.drawStringdrawString( g.getFont().getName() + " " + g.getFont().getSize() + " point bold italic.", 20, 110 ); } // fim do método paintComponent } // fim da classe FontJPanel Controle Fonts � public int getAscent() � public int getDescent() � public int getLeading() � public int getHeight() � public FontMetrics getFontMetrics() � public FontMetrics getFontMetrics( Font f ) Desenhando Linhas, Retângulos e ovais � public void drawLine( int x1, int y1, int x2, int y2 ) � public void drawRect( int x, int y, int width, int height ) � public void clearRect( int x, int y, int width, int height ) � public void fillRect( int x, int y, int width, int height ) � public void drawRoundRect( int x, int y, int width, int height, int arcWidth, int arcHeight ) � public void fillRoundRect( int x, int y, int width, int height, int arcWidth, int arcHeight ) � public void draw3DRect( int x, int y, int width, int height, boolean b ) � public void fill3DRect( int x, int y, int width, int height, boolean b ) � public void drawOval( int x, int y, int width, int height ) � public void fillOval( int x, int y, int width, int height ) Desenhando Arcos � public void drawArc( int x, int y, int width, int height, int startAngle, int arcAngle ) � public void fillArc( int x, int y, int width, int height, int startAngle, int arcAngle ) Desenhando Polígonos e Poli- linhas � public void drawPolygon( int xPoints[], int yPoints[], int points ) � public void drawPolyline( int xPoints[], int yPoints[], int points ) � public void drawPolygon( Polygon p ) � public void fillPolygon( int xPoints[], int yPoints[], int points ) � public void fillPolygon( Polygon p ) // Fig. 7.22: DrawRainbow.java // Demonstra a utilização de cores em um array. import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; public class DrawRainbow extends JPanel { // Define as cores índigo e violeta final Color VIOLET = new Color( 128, 0, 128 ); final Color INDIGO = new Color( 75, 0, 130 ); // a utilizar no arco-íris, iniciando da parte mais interna // As duas entradas em branco resultam em um arco vazio no centro private Color colors[] = { Color.WHITE, Color.WHITE, VIOLET, INDIGO, Color.BLUE, Color.GREEN, Color.YELLOW, Color.ORANGE, Color.RED }; // construtor public DrawRainbow() { setBackground( Color.WHITE ); // configura o fundo como branco } // fim do construtor DrawRainbow // desenha um arco-íris utilizando círculos concêntricos public void paintComponent( Graphics g ) { super.paintComponent( g ); int radius = 20; // raio de um arco // desenha o arco-íris perto da parte central inferior int centerX = getWidth() / 2; int centerY = getHeight() - 10; // desenha arcos preenchidos com o mais externo for ( int counter = colors.length; counter > 0; counter-- ) { // configura a cor para o arco atual g.setColor( colors[ counter - 1 ] ); // preenche o arco de 0 a 180 graus g.fillArc( centerX - counter * radius, centerY - counter * radius, counter * radius * 2, counter * radius * 2, 0, 180 ); } // for final } // fim do método paintComponent } // fim da classe DrawRainbow Exemplo - DrawSmiley // Fig. 6.16: DrawSmiley.java // Demonstrates filled shapes. import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; public class DrawSmiley extends JPanel { public void paintComponent( Graphics g ) { super.paintComponent( g ); // draw the face g.setColor( Color.YELLOW ); g.fillOval( 10, 10, 200, 200 ); // draw the eyes g.setColor( Color.BLACK ); g.fillOval( 55, 65, 30, 30 ); g.fillOval( 135, 65, 30, 30 ); // draw the mouth g.fillOval( 50, 110, 120, 60 ); // "touch up" the mouth into a smile g.setColor( Color.YELLOW ); g.fillRect( 50, 110, 120, 30 ); g.fillOval( 50, 120, 120, 40 ); } // end method paintComponent } // end class DrawSmiley API Java2D � Para acessar as funcionalidades da biblioteca Graphics2D devemos obter sua referencia a partir de um contexto gráfico. � Graphics2D g2d = ( Graphics2D ) g � g2d.translate(x, y) � g2d.rotate(radianos) Java2D Shapes � java.awt.geom � Ellipse2D.Double � Rectangle2D.Double � RoundRectangle2D.Double � Arc2D.Double � Line2D.Double API Java2D g2d.setPaint( new GradientPaint( 5, 30, Color.blue, 35, 100, Color.yellow, true ) ); g2d.fill( new Ellipse2D.Double( 5, 30, 65, 100 ) ); g2d.setPaint( Color.red ); g2d.setStroke( new BasicStroke( 10.0f ) ); g2d.draw( new Rectangle2D.Double( 80, 30, 65, 100 ) ); API Java2D BufferedImage buffImage =new BufferedImage( 10, 10, BufferedImage.TYPE_INT_RGB ); Graphics2D gg = buffImage.createGraphics(); gg.setColor( Color.yellow ); // draw in yellow gg.fillRect( 0, 0, 10, 10 ); // draw a filled rectangle gg.setColor( Color.black ); // draw in black gg.drawRect( 1, 1, 6, 6 ); // draw a rectangle gg.setColor( Color.blue ); // draw in blue gg.fillRect( 1, 1, 3, 3 ); // draw a filled rectangle gg.setColor( Color.red ); // draw in red gg.fillRect( 4, 4, 3, 3 ); // draw a filled rectangle API Java2D g2d.setPaint( new TexturePaint( buffImage, new Rectangle( 10, 10 ) ) ); g2d.fill( new RoundRectangle2D.Double(155, 30, 75, 100, 50, 50 ) ); g2d.setPaint( Color.white ); g2d.setStroke( new BasicStroke( 6.0f ) ); g2d.draw( new Arc2D.Double(240, 30, 75, 100, 0, 270, Arc2D.PIE ) ); //Arc2D.CHORD Arc2D.OPEN API Java2D g2d.setPaint( Color.green ); g2d.draw( new Line2D.Double( 395, 30, 320, 150 ) ); g2d.setPaint( Color.yellow ); g2d.setStroke( new BasicStroke( 4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 10, dashes, 0 ) ); g2d.draw( new Line2D.Double( 320, 30, 395, 150 ) ); API Java2D � GradientPaint( xi, yi, CorI, xf, yf, CorF, cicl ) � BufferedImage(lagura, altura, BufferedImage.TYPE_INT_RGB ) � buffImage.createGraphics(); � TexturePaint(buffImage, new Rectangle( lagura, altura ) ) � BasicStroke( 4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 10, dashes, 0 ) ); Classe GeneralPath � Podemos construir uma Shape personalizada com a classe GeneralPath � Utilizamos os métodos: � moveTo( x , y ) � lineTo (x , y ) � curveTo(x1, y1, x2, y2, x3, y3) � quadTo(x1, y1, x2, y2) � closePath() // Fig. 12.31: Shapes2JPanel.java // Demonstrando um caminho geral. import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.GeneralPath; import java.util.Random; import javax.swing.JPanel; public class Shapes2JPanel extends JPanel { // desenha caminhos gerais public void paintComponent( Graphics g ) { super.paintComponent( g ); // chama o paintComponent da superclasse Random random = new Random(); // obtém o gerador de números aleatórios int xPoints[] = { 55, 67, 109, 73, 83, 55, 27, 37, 1, 43 }; int yPoints[] = { 0, 36, 36, 54, 96, 72, 96, 54, 36, 36 }; Graphics2D g2d = ( Graphics2D ) g;Graphics2D g2d = ( Graphics2D ) g; GeneralPathGeneralPath star = new star = new GeneralPathGeneralPath();(); // cria o objeto GeneralPath // configura a coordenada inicial do General Path star.moveTo( xPoints[ 0 ], yPoints[ 0 ] ); // cria a estrela -- isso não desenha a estrela for ( int count = 1; count < xPoints.length; count++ ) star.lineTo( xPoints[ count ], yPoints[ count ] ); star.closePath(); // fecha a forma g2d.translate( 200, 200 ); // translada a origem para (200, 200) // gira em torno da origem e desenha estrelas em cores aleatórias for ( int count = 1; count <= 20; count++ ) { g2d.rotate( Math.PI / 10.0 ); // rotaciona o sistema de coordenadas // configura cores aleatórias g2d.setColor( new Color( random.nextInt( 256 ), random.nextInt( 256 ), random.nextInt( 256 ) ) ); g2d.g2d.fillfill( star );( star ); // desenha estrela preenchida } // for final } // fim do método paintComponent } // fim da classe Shapes2JPanel Exercício � Criar um programa em Java para desenhar círculos concêntricos usando duas cores alternadas como o desenho da figura abaixo: Exercícios Referencias � Java How to program 3, 4, 5 e 6 ed. Deitel e Deitel � Sun http://java.sun.com
Compartilhar