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ções
2
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
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
História do Java
• Baseada em C++;
• Em 1991 a empresa Sun Microsystems financiou sua criação;
• De Oak à Java;
5
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
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
Programação Orientada à Objetos
• Suponha que você possui determinado objeto, no caso uma
classe.
8
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
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
Programação Orientada à Objetos
• Algumas linguagens OOP:
•
•
•
•
•
•
•
•
•
•
C++
Objective-C
Smalltalk
Delphi
Java
C#
Perl
Python
Ruby
PHP
11
Os quatro pilares da OOP
• Abstração
• Encapsulamento
• Herança
• Polimorfismo
12
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-TestingQAInsights.png - Acesso em 03/03/2015
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.
Figura 2 - Disponível em http://gse.ufsc.br/~bezerra/disciplinas/cpp/aulas/Encapsulamento.jpg - Acesso em
03/03/2015
14
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
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
Herança
• É a capacidade de um objeto herdar características de outro.
17
Herança - Exemplo
• Note que o Gerente é um Funcionário e ambos compartilham
determinadas variáveis.
18
Herança - Exemplo
• A Solução!
19
Polimorfismo
• Polimorfismo é a possibilidade de um objeto ser referenciado
de várias maneiras.
20
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
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
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
As grandes vantagens do Java
• Orientação a objetos;
• Multiplataforma;
• Integração com web;
24
As grandes vantagens do Java
• Muitas bibliotecas gratuitas;
• A máquina virtual Java é uma especificação, e não um
software.
• É grátis!
25
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
Máquina virtual Java (JVM)
27
Figura 3 - Disponível em http://www.caelum.com.br/apostila-java-orientacao-objetos/o-que-ejava/maquinavirtual2.png - Acesso em 03/03/2015
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
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
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
30
• DrJava – http://www.drjava.org/
Comparação de código Java
com C
• Ambos códigos fazem a mesma função.
Código em C:
Código em Java:
#include<stdio.h>
int main(void) {
printf("Hello World\n");
return 0;
}
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
31
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
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
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
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-sunpor-us-7-4-bilhoes-20042009-5.shl - Acesso em 03/03/2015
35
Referências
• Figura 1 - Disponível em http://qainsights.com/wpcontent/uploads/2012/11/Black-Box-TestingQAInsights.png - Acesso em 03/03/2015
• Figura 2 - Disponível em
http://gse.ufsc.br/~bezerra/disciplinas/cpp/aulas/Encaps
ulamento.jpg - Acesso em 03/03/2015
• Figura 3 - Disponível em
http://www.caelum.com.br/apostila-java-orientacaoobjetos/o-que-e-java/maquinavirtual2.png - Acesso em
03/03/2015
36
Download

O.O - Java - Universidade Federal de Juiz de Fora