programação orientada a objetos -...

27
Programação Orientada a Objetos POO – Engenharia de Telecomunicações Prof. Emerson Ribeiro de Mello http://docente.ifsc.edu.br/mello/poo

Upload: doantu

Post on 12-Feb-2019

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 2: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 3: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 4: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

Relação com outras unidades curriculares

3/23

Page 5: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 6: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

Revisão sobre linguagem C++

Page 7: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 8: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 9: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 10: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 11: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 12: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 13: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 14: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 15: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 16: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 17: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 18: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 19: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 20: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 21: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

Criando e executando um aplicativo Java

Compilando

25 javac Arquivo.java

Executando

26 java Arquivo

17/23

Page 22: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 23: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 24: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 25: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 26: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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

Page 27: Programação Orientada a Objetos - docente.ifsc.edu.brdocente.ifsc.edu.br/mello/poo/poo-aula-01-apresentacao.pdfObjetivo da disciplina Introduzir os conceitos da programação orientada

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