programação orientada a objetos -...
TRANSCRIPT
Programação Orientada a ObjetosPOO29004 – Engenharia de Telecomunicações
Prof. Emerson Ribeiro de Mello
http://docente.ifsc.edu.br/mello/poo
11 DE FEVEREIRO DE 2019
Objetivo da disciplinaIntroduzir os conceitos da programação orientada a objetos, apresentara linguagem de programação Java e um Ambiente Integrado paraDesenvolvimento de software
Carga horária: 36h teóricas + 36h práticas13:30 – 15:20 - segunda-feira15:40 – 17:30 - terça-feira
LocalLab. Sistemas Digitais
Atendimento paralelo:terça-feira 09:40 – 11:30
Notas de aulashttps://docente.ifsc.edu.br/mello
1/23
Avaliação
03 Projetos práticos (individual)
Recuperação: Dedução de 10% do valor total da nota para cada dia deatraso após o prazo de entrega
Conceito final = PP1+PP2+PP33
Critérios para aprovação na disciplina
Mínimo 75% de presença e ConceitoFinal ≥ 6
2/23
Relação com outras unidades curriculares
3/23
Conteúdo programático
1 Fundamentações sobre paradigmas de programação
2 Conceitos sobre Programação Orientada a Objetos
3 Linguagem de programação Java
4 Ferramenta de controle de versão
5 Processo de desenvolvimento de software
4/23
Revisão sobre linguagem C++
Revisão – exercícios
1 #include<iostream>
2 #include<string>
3 using namespace std;
4
5 int main(void){
6 int ano;
7 string nome;
8 cout << "Entre com o seu nome: ";
9 cin >> nome; // tambem poderia usar getline(cin, nome);
10 cout << "Entre com o ano atual: ";
11 cin >> ano;
12 cout << "Ola " << nome << ", estamos no ano " << ano << endl;
13
14 return 0;
15 }
16 g++ arquivo.cpp -o exercicio && ./exercicio
5/23
Exercícios – revisão
Exercício 01Faça um programa que leia um número (usuário fornece o número) einforme se o mesmo é um número primo ou não.
Exercício 02Faça um programa que leia dois números e informe se cada um deles éprimo ou não.
Exercício 03Faça um programa que leia dois números e apresente todos os númerosprimos entre esses dois números fornecidos.
6/23
Exercícios – revisão
Exercício 01Faça um programa que leia um número (usuário fornece o número) einforme se o mesmo é um número primo ou não.
Exercício 02Faça um programa que leia dois números e informe se cada um deles éprimo ou não.
Exercício 03Faça um programa que leia dois números e apresente todos os númerosprimos entre esses dois números fornecidos.
6/23
Exercícios – revisão
Exercício 01Faça um programa que leia um número (usuário fornece o número) einforme se o mesmo é um número primo ou não.
Exercício 02Faça um programa que leia dois números e informe se cada um deles éprimo ou não.
Exercício 03Faça um programa que leia dois números e apresente todos os númerosprimos entre esses dois números fornecidos.
6/23
Linguagem Java – nome inspirado durante uma reunião do grupoem uma cafeteria
Em 1991 engenheiros da SunMicrosystems acreditavam quea nova onda computacionalseria a união dos dispositivoseletrônicos portáteis com oscomputadores
Nessa época um telefonecelular pesava meio kilo e oMS-DOS era o sistemaoperacional dominante
Foco inicial do projeto emprodutos para entretenimentoligados a indústria de TV digital
7/23
História da linguagem Java
Figura: Produto inicial chamado StarSeven - *7
Em 1993 o projeto toma um novo rumo com o surgimento doprimeiro navegador gráfico para web, Mosaic 1.0 da NCSA
Em 1995 Sun lança oficialmente o ambiente Java e sua incorporaçãono Netscape Navigator trouxe vida as páginas web, antes estáticas
Famoso “plugin Java” e que hoje os navegadores modernos retiraramseu suporte
8/23
A onipresença Java
Aplicações para computadores de mesa – Ex: IRPF
Aplicações servidoras – Ex: Apache Tomcat
Dispositivos móveis – Ex: Android
Sistemas embarcados – Ex: Ginga (SBTVD), SmartTVs, Smartcards
O Java continua presente em páginas web (Java Server Pages - JSP)
9/23
Características da linguagem Java
Orientada a objetos
Paradigma que surgiu na década de 60 que tem como foco dados, ouobjetos, e suas interfaces
Recursos de OO do Java são comparáveis aos recursos do C++
Robustez
Ênfase na verificação preliminar de possíveis problemas, verificaçãodinâmica (em tempo de execução) e eliminação de situaçõespropensas a erros
Apresenta solução elegante para os principais pontos fracos do C++
Alocação dinâmica de memória e ponteiros
10/23
Características da linguagem Java
Neutro em relação à arquiteturaO compilador Java gera um código intermediário, chamado debytecode, que pode ser executado em qualquer arquitetura demáquina e S.O que tenha um ambiente de execução Java (Máquinavirtual Java)
PortávelNa especificação da linguagem não existem pontos como“dependente de implementação”, como ocorre em C e C++Em Java o tipo primitivo int sempre consiste de um número inteiro de32 bits
17 #include<stdio.h>
18 #include<limits.h>
19
20 int main(void){
21 // Qual o valor sera impresso?
22 printf("%ld\n", LONG_MAX); //Depende da arquitetura: 32 ou 64bits
23 return 0;
24 }
11/23
Características da linguagem Java
Independente de plataformaEscreva uma única vez e rode em qualquer lugar que possua umamáquina virtual Java (JVM)
Existem diversas outras linguagens de programação que sãoexecutadas pela JVM. Ex: Groovy, Scala, Kotlin, Jython, JRuby
Biblioteca completa para concepção de aplicações complexasProgramação concorrente – Multi-thread
Programação distribuída
Alto desempenhoOs bytecode são interpretados pela JVM resultando em umdesempenho inferior quando comparado com códigos compiladospara um CPU específico
Os compiladores de bytecode “just-in-time” surgem como umasolução para este problema
12/23
Alguns mitos
O Java é interpretado, portanto é muito mais lento
Compiladores just-in-time permitem que códigos Java sejamexecutados com tanta rapidez como códigos C++
A inicialização da JVM e as interfaces gráficas em Java (GUI) são simlentas
Javascript é uma versão simplificada do Java
Javascript foi criada pela Netscape para criação de scripts quepodem ser usada em páginas Web
13/23
Ferramentas para desenvolvimento
Java Development Kit – JDK
Compilador, máquina virtual Java, código fonte, documentação dasAPIs
Distribuído gratuitamente pela Oracle para diversos sistemasoperacionais e arquiteturas de máquina
Última versão LTS: JDK 11
14/23
Algumas tecnologias Java
Standard Edition – Java SE
Para o desenvolvimento de aplicações desktop
Enterprise Edition – Java EE
Para o desenvolvimento de aplicações empresariais
Mobile Edition – Java ME
Para o desenvolvimento de aplicações para dispositivos móveis
15/23
Ambientes integrado de desenvolvimento
Os ambientes integrados de desenvolvimento (IDE) tornam maisagradável e produtivo o desenvolvimento de aplicações
Netbeans – Mantido pela fundação Apache
http://www.netbeans.org
Eclipse – Bem usado pela comunidade
http://www.eclipse.org
IntelliJ IDEA – comercial, porém com versão gratuita simplificada eversão gratuita completa para estudantes e professores
Android Studio é derivado deste
https://www.jetbrains.com
16/23
Criando e executando um aplicativo Java
Compilando
25 javac Arquivo.java
Executando
26 java Arquivo
17/23
Definições iniciais
Um programa em Java consiste em uma coleção de classes
Geralmente cada classe possui seu respectivo arquivo .java
O nome do arquivo deve ser idêntico ao nome da classe
O conteúdo do método main é a primeira parte de uma classe a serexecutada, quando pretende-se que esta seja executada como umaplicativo
18/23
Primeiro código em Java – OlaMundo.java
27 public class OlaMundo{
28
29 public static void main(String[] args){
30 // imprimindo a mensagem na tela
31 System.out.println("Ola mundo!");
32 }
33 }
Compilando e executando
34 $ javac OlaMundo.java
35
36 $ java OlaMundo
19/23
Referências sobre a linguagem
37 double d;
38 // algumas funcoes matematicas
39 d = Math.sqrt(25); // obtem a raiz quadrada
40 d = Math.pow(4,2); // 4 elevado a 2
41 d = Math.sin(45); // Math.cos(45), Math.tan(45)...
42
43 // obtendo numeros pseudo-aleatorios de 0 a 9
44 Random r = new Random();
45 int i = r.nextInt(10);
46
47 // formatando a saida
48 // largura de campo de 8 caracteres e precisao de 2 caracteres
49 System.out.printf("%8.2f", d);
50
51 // criando um vetor de inteiros com 10 posicoes
52 int[] vet = new int[10];
53 vet[0] = 5;
54 vet[9] = 4;
20/23
Lendo informações pelo teclado
55 import java.util.Scanner;
56
57 public class Segundo{
58
59 public static void main(String[] args){
60
61 Scanner teclado = new Scanner(System.in);
62
63 System.out.print("Informe um numero inteiro: ");
64 int i = teclado.nextInt(); // lendo inteiro
65 System.out.print("Informe um numero real: ");
66 double r = teclado.nextDouble(); // lendo real
67 System.out.println("inteiro: " + i + ", real: " + r);
68 System.out.print("Entre com seu nome: ");
69 String s = teclado.nextLine(); // lendo cadeia de caracteres
70 System.out.println("Frase: " + s);
71 }
72 }
21/23
Usando interface gráfica para interagir com o usuário
73 import javax.swing.JOptionPane;
74
75 public class Terceiro{
76
77 public static void main(String[] args){
78 String texto =
79 JOptionPane.showInputDialog("Entre com um numero");
80
81 //convertendo String para int
82 int numero = Integer.parseInt(texto);
83
84 JOptionPane.showMessageDialog(null, numero);
85 }
86 }
22/23
Leitura obrigatória
CAELUMAPOSTILA CAELUM FJ-11 JAVA E ORIENTAÇÃO A OBJETOShttp://docente.ifsc.edu.br/mello/livros/java/apostila-caelum-java-orientacao-objetos-FJ11.pdf
Ler capítulos 2 e 3
SUN MICROSYSTEMSJAVA CODE CONVENTIONShttp://docente.ifsc.edu.br/mello/livros/java/java-codeconventions.pdf
23/23