oop - java artur duque rossi mestrado em modelagem computacional universidade federal de juiz de...

36
OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Upload: internet

Post on 22-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

OOP - JavaArtur Duque RossiMestrado em Modelagem Computacional Universidade Federal de Juiz de Fora

1

Page 2: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Sumário

• Java – Aviso!• História do Java• Programação Orientada à Objetos• Os quatro pilares da OOP• Abstração• Encapsulamento

• Modificadores de acesso• Herança• Polimorfismo

• Tratamento de exceções2

Page 3: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Sumário

• As grandes vantagens do Java• As desvantagens do Java• Máquina virtual Java (JVM)• Exemplos de utilidade da JVM• JVM, JDK ou JRE, qual baixar?• IDEs• Comparação de código Java com C• Onde posso aprender Java?

3

Page 4: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Java – Aviso!

• Apesar de parecer pouco produtivo, a premissa de Java é ser utilizada para aplicações de médio e grande porte com um time de desenvolvedores de tamanho variável.

4

Page 5: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

História do Java

• Baseada em C++;

• Em 1991 a empresa Sun Microsystems financiou sua criação;

• De Oak à Java;

5

Page 6: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

História do Java

• Foi anunciado formalmente em 1995;

• Seu sucesso se deu em grande parte por sua compatibilidade com a web;

• Em 2009 a Sun, então proprietária foi comprada pela Oracle por $7,4bi.

6

Page 7: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Programação Orientada à Objetos

• A Programação orientada à objetos (OOP) é um dos paradigmas da linguagem de programação;

• Clareza no código;

• Facilita o desenvolvimento de aplicações em times de programadores em comparação com a programação estruturada.

7

Page 8: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Programação Orientada à Objetos

• Suponha que você possui determinado objeto, no caso uma classe.

8

Page 9: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Programação Orientada à Objetos

• Caso você quisesse utilizar um método ou acessar suas variáveis deveria instanciar esta classe.

• Para usar um método contido nesta classe deveria utilizar esta sintaxe.

9

Page 10: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Programação Orientada à Objetos

• O modificador static (que se aplica antes dos modificadores de acesso) faz com que o objeto e seus atributos dispensem necessidade de serem instanciados.

• Caso a classe Funcionario fosse estática, para acessar o método pagamento seria utilizado o seguinte código.

10

Page 11: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Programação Orientada à Objetos

• Algumas linguagens OOP:• C++• Objective-C • Smalltalk• Delphi• Java• C#• Perl• Python• Ruby• PHP

11

Page 12: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Os quatro pilares da OOP

• Abstração

• Encapsulamento

• Herança

• Polimorfismo

12

Page 13: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Abstração• Esconder todas as informações irrelevantes para o usuário, a

fim de tornar o código mais direto.

13

Figura 1 - Disponível em http://qainsights.com/wp-content/uploads/2012/11/Black-Box-Testing-QAInsights.png - Acesso em 03/03/2015

Page 14: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Encapsulamento

• Separar o as informações em conjuntos para que o programa fique mais flexível, sendo mais fácil de se manipular;

• Restringir o acesso de determinados objetos em alguns casos.14

Figura 2 - Disponível em http://gse.ufsc.br/~bezerra/disciplinas/cpp/aulas/Encapsulamento.jpg - Acesso em 03/03/2015

Page 15: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Modificadores de acesso

• Public:• Pode ser acessado por outro código do programa do mesmo

assembly ou outro assembly que referencia o objeto.

• Private• Só pode ser acessado pela mesma classe ou estrutura que o

criou.

15

Page 16: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Modificadores de acesso• Protected• Pode ser acessado pela mesma classe ou estrutura que o criou e

classes derivadas.

• Internal• Pode ser acessado por outro código somente do mesmo

assembly.

• Protected Internal • Pode ser acessado por qualquer código no mesmo assembly ou

por qualquer classe derivada em outro assembly.

16

Page 17: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Herança

• É a capacidade de um objeto herdar características de outro.

17

Page 18: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Herança - Exemplo

• Note que o Gerente é um Funcionário e ambos compartilham determinadas variáveis.

18

Page 19: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Herança - Exemplo• A Solução!

19

Page 20: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Polimorfismo

• Polimorfismo é a possibilidade de um objeto ser referenciado de várias maneiras.

20

Page 21: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Polimorfismo - Exemplo• Considere a classe gerente que herdou características de um

funcionário no exemplo de herança e uma determinada classe a seguir.

21

Page 22: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Polimorfismo - Exemplo• Caso o seguinte código seja escrito, ao ser compilado e rodado o

programa irá rodar sem nenhum erro, pois gerente é um funcionário.

22

Page 23: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Tratamento de exceções• Em muitas linguagens OOP o tratamento de exceções em

código ficou facilitado.

• A sintaxe de um código com tratamento de exceções genérico é:

23

Page 24: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

As grandes vantagens do Java

• Orientação a objetos;

• Multiplataforma;

• Integração com web;

24

Page 25: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

As grandes vantagens do Java

• Muitas bibliotecas gratuitas;

• A máquina virtual Java é uma especificação, e não um software.

• É grátis!

25

Page 26: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

As desvantagens de Java

• A pré-compilação exige tempo;

• Não condiz com a implementação de pontos flutuantes da maioria dos processadores;

• Os bytecodes gerados podem ser usados em engenharia reversa;

• Não suporta herança múltipla de implementação nem ponteiros.

26

Page 27: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Máquina virtual Java (JVM)

27

Figura 3 - Disponível em http://www.caelum.com.br/apostila-java-orientacao-objetos/o-que-e-java/maquinavirtual2.png - Acesso em 03/03/2015

Page 28: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Exemplos de utilidade da JVM

• Roda sobre o sistema operacional;

• Otimiza o código através de hotspots;

• Utiliza o Just in Time Compiler para isso;

28

Page 29: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

JVM, JDK ou JRE, qual baixar?

• JVM (Java Virtual Machine) é apenas máquina virtual, ela vem junto com o JDK ou JRE;

• JRE (Java Runtime Enviroment) é o ambiente de execução Java;

• JDK (Java Development Kit) é o JRE com o compilador Java e outras ferramentas;

29

Page 30: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

IDEs• Netbeans – https://netbeans.org/

• Eclipse – https://eclipse.org/

• Jcreator – http://www.jcreator.com/

• Processing – https://www.processing.org/

• BlueJ – http://www.bluej.org/

• Jbuilder – http://www.embarcadero.com/br/products/jbuilder

• DrJava – http://www.drjava.org/30

Page 31: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Comparação de código Java com C

• Ambos códigos fazem a mesma função.

31

Código em C:

#include<stdio.h>int main(void) { printf("Hello World\n"); return 0;}

Código em Java:

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); }}

Page 32: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Onde posso aprender Java?

• Livros:• Lewis, John; Loftus, William Java Software Solutions Foundations

of Programming Design. Pearson Education.

• Deitel, Paul; Deitel, Harvey. Java Como programar Pearson Education.

32

Page 33: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Onde posso aprender Java?

• Sites:• http://www.caelum.com.br/apostila-java-orientacao-objetos/ -

Apostila online• http://stackoverflow.com/ - Comunidade de programação

internacional• http://www.guj.com.br/ - Comunidade de programação brasileira• http://www.codeproject.com/ - Repositório de programas com

explicação do código

33

Page 34: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Onde posso aprender Java?

• Sites:• https://code.google.com/ - Repositório de códigos de programas• https://github.com/ - Repositório de códigos de programas

(Muitos open sources)

• Se nada der certo... Ou se der muito certo!• https://www.elance.com/ - Site de freelancers desenvolvedores,

designers.

34

Page 35: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Referências• Lewis, John; Loftus, William (2012). Java Software Solutions

Foundations of Programming Design 7th ed. Pearson Education.

• Deitel, Paul; Deitel, Harvey (2010). Java Como programar 8ª ed. Pearson Education.

• http://www.caelum.com.br/apostila-java-orientacao-objetos/ - Acesso em 03/03/2015

• http://info.abril.com.br/noticias/negocios/oracle-compra-sun-por-us-7-4-bilhoes-20042009-5.shl - Acesso em 03/03/2015 35

Page 36: OOP - Java Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora 1

Referências

• Figura 1 - Disponível em http://qainsights.com/wp-content/uploads/2012/11/Black-Box-Testing-QAInsights.png - Acesso em 03/03/2015

• Figura 2 - Disponível em http://gse.ufsc.br/~bezerra/disciplinas/cpp/aulas/Encapsulamento.jpg - Acesso em 03/03/2015

• Figura 3 - Disponível em http://www.caelum.com.br/apostila-java-orientacao-objetos/o-que-e-java/maquinavirtual2.png - Acesso em 03/03/2015

36