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