O.O - Java - UFJF | Universidade Federal de Juiz de Fora · As grandes vantagens do Java...
Transcript of O.O - Java - UFJF | Universidade Federal de Juiz de Fora · As grandes vantagens do Java...
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 (Integrated Development Enviroment)
• 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-Testing-QAInsights.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. 14
Figura 2 - Disponível em http://gse.ufsc.br/~bezerra/disciplinas/cpp/aulas/Encapsulamento.jpg - Acesso em 03/03/2015
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-e-java/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 (Integrated Development Enviroment) • 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
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"); } }
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-sun-por-us-7-4-bilhoes-20042009-5.shl - Acesso em 03/03/2015
35
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