Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução à Programação Orientada a Objetos Programação e Sistemas de Informação 2 Paradigmas de programação (1) Um paradigma de programação forne- ce (e determina) a visão que o progra- mador possui sobre a estruturação e execução do programa. Programação procedural – Cobol Programação estruturada – Pascal, C, Algol Programação orientada a objectos – Smalltalk, C++, Java Programação orientada a eventos – Visual Basic 3 Paradigmas de programação (2) Programação estruturada – organiza o códi- go através de subprogramas (procedimentos e funções) e recorrendo apenas a três estru- turas de controlo: sequenciação, decisão e repetição. Programação orientada a objectos – orga- niza o código em objectos que são autóno- mos e trocam mensagens entre si durante a execução do programa, imitando o compor- tamento dos objectos do mundo real. 4 Tecnologia Java (1) Uma linguagem de programação; Um ambiente de desenvolvimento; Um ambiente de execução; Um ambiente de distribuição. 5 Tecnologia Java (2) Uma linguagem de programação: Utilizada para criar todos os tipos de aplicações através do JSE, JEE e JME. JSE (Java Standard Edition) – concentra o núcleo de funcionalidades básicas do Java, sendo adequado na programação de aplicações para desktops e servidores. JEE (Java Enterprise Edition) – possui módulos do JSE e adiciona diversas APIs para, entre outras, a programação de aplicações para a Web. JME (Java Micro Edition) – destinado à programa- ção de aplicações para telemóveis, PDAs, entre outros. 6 Tecnologia Java (3) Um ambiente de desenvolvimento: Fornece um grande conjunto de ferramentas: Compilador Executável javac.exe Interpretador Executável java.exe Gerador de documentos Executável javadoc.exe Empacotamento de classes e ficheiros Executável jar.exe 7 Tecnologia Java (4) Um ambiente de execução: Permite a execução de diversas aplica- ções em máquinas onde o JRE esteja ins- talado. JRE (Java Runtime Environment) – como o próprio nome indica é o “Ambiente de Execução Java”, constituído pela JVM e pelas bibliotecas Java. JVM (Java Virtual Machine) – máquina imaginária que emula uma aplicação em uma máquina real. 8 Tecnologia Java (5) Um ambiente de distribuição: Existem dois ambientes de distribui- ção principais: JRE Browsers 9 Java como linguagem de programação (1) Criada em 1991 por James Gosling da Sun Microsystems. Esteve para denominar-se Oak (Car- valho) devido à árvore que era visível através da janela de James Gosling. O nome foi mudado para Java porque já existia uma linguagem de programação com o nome Oak. 10 Java como linguagem de programação (2) Características: (1) Orientada a objectos: desde o início que foi projectada para ser orienta- da a objectos. Familiar: é muito familiar para os programadores C/C++. Simples: a aprendizagem pode ser feita num curto espaço de tempo. 11 Java como linguagem de programação (3) Características: (2) Robusta: foi pensada para o desen- volvimento de aplicações confiá- veis, fornecendo verificações duran- te a compilação e em tempo de execução. O colector de lixo (garbage collec- tion) responsabiliza-se pela limpeza da memória, libertando assim o programador desta tarefa. 12 Java como linguagem de programação (4) Características: (3) Segura: as aplicações Java são executadas em ambiente próprio (JRE) o que inviabiliza a intrusão de código malicioso; Portável: os programas desenvolvi- dos nesta linguagem podem ser executados em praticamente qual- quer máquina desde que esta possua o JRE instalado. 13 Fases de um programa Java (1) 1. Criação do código fonte (Programa.java); 2. Compilação do código fonte e geração do bytecode (Programa.class); 3. Interpretação do bytecode pela JVM que funciona então como interpretador; 4. Conversão do bytecode em linguagem má- quina. 14 Fases de um programa Java (2) Ao contrário de outras aplicações, que são compiladas directamente para o código da máquina em que serão executadas, em Java estas somente são transformadas em código máquina em tempo de execução. Este mecanismo permite desenvolver aplicações sem a preocupação do local onde estas serão executadas pois, desde que exista uma JVM instalada, o código será executável. 15 Fases de um programa Java (3) 16 Fases de um programa Java (4) As informações, relativas ao ambiente no qual uma aplicação Java é executada, são utilizadas pela JVM para fazer optimizações em tempo de execução e, havendo necessidade, o código que está a ser interpretado é transformado em instru- ções nativas do sistema operativo (código máquina) através do compilador JIT (Just In Time). 17 Programar em Java (1) 1. Fazer o download do JDK: http://java.sun.com/javase/downloads/index.jsp JDK (Java Development Kit) – composto pelo JRE e por um conjunto de ferramen- tas úteis ao programador Java. 2. Instalar o JDK 3. Configurar as variáveis de ambiente 18 Programar em Java (2) 4. Instalar um IDE IDE (Integrated Development Environ- ment) – programa que reúne característi- cas e ferramentas de apoio ao desenvol- vimento de software com o objectivo de agilizar este processo. BlueJ (www.bluej.org) NetBeans (www.netbeans.org) Eclipse (www.eclipse.org) 19 Programar em Java (3) 20 Regras para escrita de programas em Java (1) Os programas em Java podem assumir três modalidades: Applications, Applets e Servlets. Qualquer programa é organizado em um ou mais ficheiros com a extensão .java contendo apenas uma classe pública cada um. O nome do ficheiro tem que ser exatamente igual ao nome da classe pública que este contém. O Java é totalmente CASE-SENSITIVE, ou seja, distingue as maiúsculas das minúsculas, sendo que meuNome é totalmente diferente de MeuNome. 21 Regras para escrita de programas em Java (2) A Sun convencionou o seguinte no que diz respeito a nomes: Classes e Interfaces: A primeira letra deve ser maiúscula e, caso o nome seja formado por mais de uma palavra, as primeiras letras das demais palavras também devem ser maiúsculas . Métodos e Variáveis: A primeira letra deve ser minúscula e após esta aplicar o camelCase. Constantes: Todas as letras devem ser maiúsculas e caso o nome seja formado por mais do que uma palavra estas devem ser separadas por underscore. 22 Tipos de dados Tipos primitivos boolean char, byte, short, int, long float, double Tipos referência Arrays Classes Interfaces 23 Tipos primitivos (1) Conversões sem perda de informação (1) byte → short, int, long, float ou double short → int, long, float ou double char → int, long, float ou double int → long, float ou double long → float ou double float → double 24 Tipos primitivos (2) Conversões sem perda de informação (2) 25 Tipos primitivos (3) Conversões com perda de informação As conversões explícitas são efectuadas através do casting. Estas conversões são permitidas em todos os tipos de dados (excepto o boolean), mas o programador deve estar ciente que poderá haver perda de bits. Exemplo int x = 3 short y = (short) x 26 Ficha de Trabalho Nº1 Compreender as conversões entre tipos primitivos. 27 Tipos referência (1) Arrays Objectos que armazenam um número pré-definido de elementos que são acedidos através de índices sempre iniciados em 0. A utilização de arrays implica três etapas: Declaração: a referência do array é declarada Construção: é definido o tamanho e instancia- do o array Inicialização: os elementos são inseridos no array 28 Tipos referência (2) Classes Este tipo referência será abordado posteriormente. Interfaces Este tipo referência será abordado posteriormente. 29 Ficha de Trabalho Nº2 Compreender a utilização dos tipos referência – arrays. 30 Operadores principais (1) Operadores aritméticos: Operador Descrição ++ Pré/pós-incremento -- Pré/pós-decremento + Sinal + - Sinal - * Multiplicação / Divisão % Módulo (Resto) + Soma - Subtracção 31 Operadores principais (2) Operadores relacionais: Operador Descrição > Maior que < Menor que >= Maior ou igual a <= Menor ou igual a == Igual a != Diferente de ? : Operador ternário instanceof Retorna true se o objecto da esquerda for uma instância do objecto da direita 32 Operadores principais (3) Operadores lógicos: Operador Descrição ! (não) Negação && (e) Conjunção || (ou) Disjunção ^ (não ou) Disjunção exclusiva 33 Estruturas de controlo (1) if Quando existe apenas uma instrução após o if não é necessário abrir um bloco com as chavetas. Se existirem mais instruções a abertura do bloco é necessária. if (expressão booleana) instrução_simples; if (expressão booleana) { instruções } 34 Estruturas de controlo (2) if – else Quando existe apenas uma instrução após o if não é necessário abrir um bloco com as chavetas. Quando houver mais do que uma condição usa-se o else. if (expressão booleana) { instruções } else if (expressão booleana) { instruções } else { instruções } 35 Estruturas de controlo (3) while No while o teste é feito à cabeça. Quando existe apenas uma instrução após o while não é necessário abrir um bloco com as chavetas. while (expressão booleana) { instruções; } 36 Estruturas de controlo (4) do – while No do-while o teste é feito à cauda. Quando existe apenas uma instrução após o do não é necessário abrir um bloco com as chavetas. do { instruções; } while (expressão booleana); 37 Estruturas de controlo (5) for Quando existe apenas uma instrução após o for não é necessário abrir um bloco com as chavetas. for (inicialização; expressões booleanas; passo da repetição) instrução_simples; for (inicialização; expressões booleanas; passo da repetição) { instruções; } 38 Estruturas de controlo (6) break e continue break – interrompe o ciclo while, do-while ou for. continue – interrompe uma iteração e reinicia o bloco com a próxima iteração. while (!terminado) { passarPagina(); if (alguemChamou == true) break; //sai do ciclo if (paginaPublicidade == true) continue; //salta esta iteração lerPagina(); } restoDoPrograma(); 39 Estruturas de controlo (7) rótulo break Quando existem vários ciclos aninhados estes rótulos permitem interromper o ciclo mais externo. revista: while (!terminado) { for (int i=10; i<100; i++) { passarPagina(); if (textoChato == true) break revista; //sai do ciclo while } maisIntruções(); } restoDoPrograma(); O break sem rótulo sairia apenas do ciclo for 40 Estruturas de controlo (8) switch O switch só trabalha com valores inteiros e char. switch(valor) { case valor1 : instruções; break; case valor2 : instruções; break; ... default: instruções; } 41 Pacotes (1) Um pacote em Java é um directório em que está armazenada uma ou mais classes. Os pacotes costumam agrupar classes das mesmas afinidades. Existem inúmeros pacotes em Java sendo dois dos mais utilizados o java.lang e java.util. Para além dos pacotes já existentes o utilizador pode criar pacotes próprios. 42 Pacotes (2) As classes definidas nos pacotes podem ser empregadas em qualquer outra classe mediante a utilização da instrução import: import java.util.Date //indica que será usada a classe Date do pacote java.util import java.util.* //indica que serão usadas todas as classes que pertencem ao pacote java.util Por predefinição o pacote java.lang é importado automaticamente pelo Java não sendo, por isso, necessário fazer o import do mesmo. 43 Entrada e Saída de dados (1) Classe Scanner do pacote java.util import java.util.Scanner; public class ModoTexto { public static void main(String[] args) { // cria a variável de leitura dos dados Scanner s = new Scanner(System.in); // usa os métodos de leitura específicos do tipo de dados desejado System.out.print(“Insira uma frase: "); String linha = s.nextLine(); // lê a linha System.out.print(“A frase inserida foi “+linha); System.out.print(“Insira um numero inteiro: "); int num = s.nextInt(); // lê um número inteiro System.out.print(“O número inserido foi “+num); } } 44 Entrada e Saída de dados (2) Classe JOptionPane do pacote javax.swing import javax.swing.JOptionPane; public class ModoGrafico { public static void main(String[] args) { String nome; //Mostra uma caixa de diálogo que solicita a entrada de dados nome = JOptionPane.showInputDialog(“Insira o seu nome: “); String mensagem = “O nome inserido foi “+nome; //Mostra uma caixa de diálogo com a mensagem JOptionPane.showMessageDialog(null, mensagem); } } 45 Ficha de Trabalho Nº3 Aplicar a entrada de dados via teclado e a saída de dados via ecrã. 46 Objectos (1) Objectos são “coisas” que temos no mundo real e abstraímos no mundo virtual para que possamos manipulá-los na resolução de problemas. Os objectos possuem estados e comporta- mentos que, na programação estruturada, são equivalentes aos dados e subprogramas e, na programação orientada aos objectos (POO), são equivalentes aos atributos e métodos. 47 Objectos (2) Objecto Atributos Métodos Pessoa nome, idade, género falar, andar Carro marca, modelo, cor acelerar, travar, abastecer Cão nome, raça latir, correr Todos os objectos são oriundos de classes, ou seja, são instâncias das classes. 48 Classes (1) Uma classe é uma especificação para um determinado tipo de objec- to. Para que um objecto seja de deter- minada classe terá, obrigatoriamen- te, que respeitar a especificação da classe. Uma classe é um tipo de dados refe- rência. 49 Classes (2) Pessoapessoa1 pessoa2 nome Camila Mário idade 12 17 género F M A coluna Pessoa define a classe enquanto as colunas pessoa1 e pessoa2 são os objectos dessa classe. Cada pessoa particular é uma instância da classe que terá um valor diferente para cada um dos atributos definidos na especificação da classe. 50 Classes (3) O código seguinte, que corresponde à classe Pessoa, define os atributos dos objectos daquela classe: class Pessoa { //Atributos String nome; //Nome da Pessoa int idade; //Idade da Pessoa } 51 Classes (4) O código seguinte, que corresponde à classe Pessoa, define os métodos dos objectos daquela classe: class Pessoa { //Métodos void falar() { System.out.println("Blá, Blá, Blá, ..."); } } 52 Construtores (1) O construtor não é um método, mas antes, um bloco de código que é executado sempre que utilizamos a palavra reservada new. A sua única função é criar uma instância da classe (objecto). Quando o construtor não é explicita- mente declarado o compilador insere o construtor default, isto é, um construtor sem parâmetros e com o corpo vazio. 53 Construtores (2) O código seguinte, que corresponde à classe Pessoa, define dois construtores para aquela classe: class Pessoa { //Construtores public Pessoa() { //Construtor default } public Pessoa(String nome, int idade) { this.nome = nome; this.idade = idade; } } 54 Construtores (3) Cada instância da classe (objecto) ocupa um lugar diferente na memória. class UsaPessoa { public static void main(String[] args) { Pessoa pessoa1 = new Pessoa(“Ana”, 12); Pessoa pessoa2 = new Pessoa(“Rui”, 15); } } 253 Pessoa nome = “Ana” idade=12 254 255 256 Pessoa nome = “Rui” idade = 15 257 Na verdade, pessoa1 e pessoa2 não contêm objectos do tipo Pessoa, mas antes, os endereços de memória onde estes se encontram guardados. Memória 55 Ficha de Trabalho Nº4 Aplicar a entrada de dados via teclado e a saída de dados via ecrã. 56 Encapsulamento (1) Encapsulamento refere-se ao isolamento entre as partes do programa. Uma das principais formas de o fazer é proibindo o acesso directo aos atributos de um objecto por objectos externos. Para limitar o acesso às classes ou aos membros do objecto (atributos e métodos) utilizamos os modificadores de acesso existentes em Java. 57 Encapsulamento (2) Modificadores de acesso: public: as classes e membros são visíveis em qualquer lugar ; package: são visíveis em classes do mesmo pacote mas não nas suas subclasses. Na verdade, não existe um modificador com este nome, pois, a ausência de modificador torna-o packcage. protected: são visíveis na mesma classe e suas subclasses independentemente do pacote onde estas últimas se encontrem; private: são visíveis apenas dentro da mesma classe. 58 Encapsulamento (3) Normalmente, os métodos são públi- cos (public) e os atributos private (privados); Isto ocorre pois é desejável que os atributos de um objecto só possam ser alterados por ele mesmo, inviabilizan- do desta forma situações imprevistas. 59 Getters e Setters (1) Estes métodos são responsáveis por fornecer meios para modificar o estado de um objecto, isto é, meios para aceder e modifi- car os valores dos atributos de um objecto. Estes métodos apenas são criados se forem realmente necessários, ou seja, não se dará acesso aos atributos que não interessam a outros objectos mas interessam apenas ao próprio objecto. 60 Getters e Setters (2) A convenção para estes métodos é a seguinte: Getters: método que retorna o atributo e é na, maioria dos casos, composto pela palavra get[nome do atributo]. Ex: getIdade(), getSalario() Quando o método retorna um valor do tipo boolean a convenção passa a ser palavra is[nome do atributo] 61 Getters e Setters (3) A convenção para estes métodos é a seguinte: Setters: método que atribui/modifica o valor de um atributo e é sempre composto pela palavra set[nome do atributo] e o parâmetro do mesmo tipo do atributo. Ex: setIdade(int idade), setSalario(double salario) Utiliza-se a palavra reservada this para imputar ao atributo o valor que é passado como parâmetro. 62 Ficha de Trabalho Nº5 Compreender o conceito de Encapsulamento. 63 Referências Bibliográficas EIJE, Albert; BARROS, Cláudio; KOJIIO, Miguel. Curso Java Starter [online]. Disponível na Internet via WWW. URL http://www.t2ti.com/ curso/video/java/ basico/java_starter.php. Consultado em Março 2009 iPed. Curso de Java [online]. Disponível na Internet via WWW. URL http://www.iped. com.br/curso/java/. Consultado em Março 2009
Compartilhar