A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação Orientada a Objeto - Aula 11 Introdução à Orientação a Objetos Prof. Ricardo Linden.

Apresentações semelhantes


Apresentação em tema: "Programação Orientada a Objeto - Aula 11 Introdução à Orientação a Objetos Prof. Ricardo Linden."— Transcrição da apresentação:

1 Programação Orientada a Objeto - Aula 11 Introdução à Orientação a Objetos Prof. Ricardo Linden

2 Programação Orientada a Objeto - Aula 12 História das LPOO Simula 67: Encapsulamento em uma definição de class Smalltalk-80: Xerox PARC: Primeira linguagem verdadeiramente orientada a objeto (Alan Kay) C++: Primeira linguagem OO amplamente aceita (inicialmente era apenas um pré-processador) C++, Ada95, Modula-3, CLOS: acrescentaram orientação a objeto a estruturas pré-existentes Java: Modelo de objetos derivado do C++, simplificado e melhorado

3 Programação Orientada a Objeto - Aula 13 Programação OO X Procedural A orientação a objeto muda o foco da programação dos algoritmos para as estruturas de dados: –A organização lógica dos dados determina a organização do software –O processo de design do software se concentra na organização dos dados e na definição das operação que a eles são aplicadas –Tipo de dados agora está embutido no conceito de classe Mais perto da forma como pensamos no mundo real

4 Programação Orientada a Objeto - Aula 14 Conceitos Básicos da Orientação a Objetos Para podermos começar a nossa aula, nós primeiro precisamos entender os seguintes conceitos básicos: –Objeto –Classe –Instância –Método –Mensagem –Sub-classe –Herança –Abstração –Encapsulamento –Polimorfismo

5 Programação Orientada a Objeto - Aula 15 Objeto Um pacote de software que contém uma coleção de procedimentos e dados relacionados. Um objeto representa um item, unidade ou entidade (real ou abstrata) individualmente separável com um papel bem definido no domínio do problema. Um objeto, como um substantivo, pode ser uma pessoa, local ou objeto basicamente, qualquer conceito que seja aplicável ao projeto do sistema.

6 Programação Orientada a Objeto - Aula 16 Classe Um padrão que define os métodos e características que serão incluídos em um tipo particular de objeto. Uma classe é uma definição geral dos atributos e métodos de um conjunto de objetos. Exemplos: Cliente, Veículo, Conta Corrente, Documento, Reserva Cada uma destas classes representa uma série de características comuns: –dados, como placa do veículo –ações, como ligar o veículo

7 Programação Orientada a Objeto - Aula 17 Instância Outro nome para um objeto que pertença a uma classe particular. Quando uma aplicação está executando, objetos são instanciados de uma classe e tornam-se então instâncias desta classe. Exemplos - Ticket No representa um objeto (instância) da classe Reserva. - Meu Fusquinha representa uma instância da classe Veículo

8 Programação Orientada a Objeto - Aula 18 Método Um procedimento/função dentro de um objeto. Métodos são ações que uma classe ou objeto faz e incluem a lógica da aplicação. Um método é similar a uma função/procedimento ou subrotina em termos de programação estruturada. Exemplos: - Criar uma nova conta é um método da classe Conta - Registrar para uma Matéria é um método para a classe Estudante

9 Programação Orientada a Objeto - Aula 19 Atributos vs. Métodos Atributos definem os dados enquanto os métodos definem a funcionalidade. Atributos são definidos por seus nomes e tipos (por exemplo, integer, string, date). Métodos são definidos escrevendo o código para isto (exceto no caso de métodos virtuais) Atributos e métodos são ambos encapsulados dentro dos seus objetos correspondentes

10 Programação Orientada a Objeto - Aula 110 Encapsulamento Uma técnica nos quais os dados estão encapsulados junto com seus procedimentos correspondentes Encapsulamento esconde tanto os métodos quanto os atributos do mundo exterior. Visibilidade: Public, Private, Protected, e Package-level. –Private: Somente membros da classe podem acessar a propriedade/método –Protected: Somente membros da classe e subclasses (classes descendentes) podem acessar a propriedade/método –Public: Todas as classes podem acessar a propriedade/método –Package Level : Todos as classes do mesmo package conseguem acessar a propriedade/método Vamos discutir mais detalhadamente mais à frente

11 Programação Orientada a Objeto - Aula 111 Mensagem Um sinal que um objeto manda para outro que pede que o objeto que recebe o sinal execute um de seus métodos. Como resultado do encapsulamento, mandar mensagens se torna o mecanismo de comunicação entre objetos que interagem. Um formato geral de mensagem tem o seguinte formato: Object.método(parâmetros) Exemplo: invoice.calcularTotal ( )

12 Programação Orientada a Objeto - Aula 112 Sub-Classe Uma classe que é um caso especial de outra classe. Sub-classe também é conhecida como classe filha, enquanto que a super-classe é também chamada de classe pai ou mãe. Sub-classes são especializações das super-classes e são criadas via herança Exemplo: –Um pediata é um caso especial de médico –Um carro é um caso especial de veículo.

13 Programação Orientada a Objeto - Aula 113 Herança Em OO existe um relacionamento Is-a entre classes –Exemplo : aluno-4o.-período is-a aluno is-a pessoa Classes derivadas são chamadas de subclasses (mesmo que normalmente sejam maiores) Pode haver herança simples e múltiplia Classes base abstratas: –Classes não têm instâncias reais (objetos) –Subclasses têm que implementar alguns métodos –Ex. : classe veículo_automotor com o método abstrato ligar. Não existem objetos desta classe, que é uma classe base abstrata. As classes carro e moto herdam as propriedades desta classe e implementam o método ligar.

14 Programação Orientada a Objeto - Aula 114 Hierarquia de Classes Classes podem ser organizadas em hierarquias de forma que classes mais específicas herdem métodos de classes mais abstratas Diagramas de hierarquia de classes Classe: Cadeira subclasses Cadeira de Escritório Cadeira de Balanço

15 Programação Orientada a Objeto - Aula 115 Abstração É o processo de capturar o comportamento essencial e características e colocá-las de uma forma conveniente para organizar a hierarquia de classes. Exemplo: –Veículo (Sub-classes: Terrestre, Marinho e Aéreo) Classes abstratas nunca são instanciadas –Decorrência da sua natureza genérica –Exemplo : Nada é um veículo genericamente, mas sim um veículo terreste, marinho ou aéreo.

16 Programação Orientada a Objeto - Aula 116 Sobrecarga Mesmo nome, mas número ou tipo de parâmetros diferentes. Para sobrecarregar uma função, basta declarar os vários tipos que ela pode ter. Exemplo : classe carro, método frear. –Se receber um parâmetro, indica a força que temos que aplicar no pedal. –Se não receber nenhum parâmetro, indica que temos que parar o carro. Também é aplicável a operadores Exemplo: operador (adição inteira) (adição real)

17 Programação Orientada a Objeto - Aula 117 Polimorfismo Esconder procedimentos alternativos por trás de uma interface comum. Polimorfismo vem do grego e significa muitas formas. Isto permite que se tenha uma interface comum que esconde detalhes de implementação Exemplo : método frear. –Tem uma implementação na classe base (carro). –Tem outra implementação na classe filha (ferrari). A função da classe filha se sobrepõe (overrides) à da classe mãe

18 Programação Orientada a Objeto - Aula 118 Polimorfismo Sobrecarga Com polimorfismo, nós decidimos qual dos métodos será usado em tempo de execução (exemplo claro de binding dinâmico). Com sobrecarga, podemos decidir qual dos métodos será usado em tempo de compilação, distinguindo pelos parâmetros passados. –O processo de escolha da função correta pelo compilador é chamado de resolução de sobrecarga (overload resolution)

19 Programação Orientada a Objeto - Aula 119 Programas Java Programas Java consistem em classes, que são formadas por atributos e métodos que realizam tarefas e retornam informações quando apropriado. Isto é, para fazer seus programas Java, você precisa desenvolver classes que chamarão outras classes, e assim por diante. Logo, precisamos aprender como desenvolver nossas próprias classes em Java para que possamos implementar soluções para nossos problemas.

20 Programação Orientada a Objeto - Aula 120 Programando OO em Java O núcleo da LP é pequeno, mas existem várias bibliotecas de classes que fornecem várias funcionalidades adicionais para a LP. Em Java usamos uma abordagem de blocos de construção, reutilizando os softwares já existentes. Isto fará com que: – Seus programas tenham melhor desempenho, pois normalmente as classes pré- programadas são mais otimizadas do que o seu código pessoal. –Melhore a portabilidade do seu programa, pois estará usando classes e métodos que são incluídos em praticamente todas as implementações do Java –Você economize tempo de programação.

21 Programação Orientada a Objeto - Aula 121 A Linguagem de Programação Java Onde encontrar informação –Inventada pela Sun Microsystems –http://java.sun.com O código Java é compilado para um código de nível médio (byte code), que é independente de máquina e precisa então ser interpretedado por um interpretador Java. Código Fonte Java Compilador Java Arquivo Class Java Interpretador Java Executar Programa Executar Programa

22 Programação Orientada a Objeto - Aula 122 Editando seus programas Um arquivo fonte Java é 100% texto puro. Você pode editá-lo usando qualquer editor de texto de sua preferência (notepad, vi, emacs, edit, etc). Existem ambientes IDE, como Netbeans (escrito em Java e gratuito para usos não comerciais), Jbuilder, Visual Café e o Visual J++ Os arquivos fonte devem ter extensão.java

23 Programação Orientada a Objeto - Aula 123 Java é uma linguagem de formato livro. Isto quer dizer que não necessitamos de espaços em branco, identação ou pulo de linha para que o compilador entenda nossos códigos. Editando seus programas Como em qualquer linugagem, devemos programa em Java buscando sempre o máximo de clareza para facilitar a compreensão e a manutenção posteriores. Assim sendo, apesar de não serem obrigatórios, a identação, pulos de linha e espaços em branco são altamente recomendados

24 Programação Orientada a Objeto - Aula 124 Breve introdução ao Java Vamos ver agora dois exemplos que nos permitirão ter uma idéia de como programar em Java. Entretanto, vários conceitos serão omitidos neste momento. Não há motivo para estresse ou para começar a pensar em destruir seu computador - nós vamos ver tudo detalhadamente ainda neste curso!

25 Programação Orientada a Objeto - Aula 125 Primeiro Exemplo em Java //Este é o nosso primeiro exemplo em Java public class HelloWorld { public static void main (String[] args) { System.out.println("Hello World!"); }

26 Programação Orientada a Objeto - Aula 126 Conceitos vistos no exemplo // São iniciadores de comentários em uma linha (como no C++). Em Java também podemos ter comentários delimitados por /* e */, como no C. Os comentários marcados por // são preferíveis por poderem ser lidos pela ferramenta javadoc, que veremos neste curso se tivermos tempo. Não há necessidade de correr com a matéria, mas há muito para se ver em Java. Logo, quanto mais adiante formos, mais vocês aprenderão.

27 Programação Orientada a Objeto - Aula 127 public class HelloWorld –Esta linha é uma definição de classe. –Todo programa em Java consiste em uma ou mais classes definidas pelo programador (ou pelo usuário). –A palavra chave class introduz uma definição de classe em Java e é imediatamente seguida pelo nome da classe. –Notas importantes: ÙO nome da classe segue é um identificador ÙAs palavras chaves em Java são palavras reservadas ÙJava faz diferenciação entre maiúsculas e minúsculas (HelloWorld Helloworld) Conceitos vistos no exemplo

28 Programação Orientada a Objeto - Aula 128 public class HelloWorld –public é um modificador de visibilidade –Toda classe public deve estar gravada em um arquivo cujo nome é o mesmo da classe (neste caso, HelloWorld.java) Assim, não podemos ter duas classes public no mesmo arquivo. Vamos ver como contornar isto mais a frente. –Todo arquivo java deve terminar com a extensão.java Conceitos vistos no exemplo

29 Programação Orientada a Objeto - Aula 129 { } –Os blocos de comando são definidos pelas chaves, como no C e no C++ –Vocês notarão muitos pontos em comum entre o Java e estas linguagens. public static void main (String[] args) –Todo aplicativo Java deve ter um método main, onde ele é iniciado. –Se não tiver, o interpretador Java não executará a sua classe. –Como no C, a palavra chave void indica que o método não retorna nenhum valor. Conceitos vistos no exemplo

30 Programação Orientada a Objeto - Aula 130 public static void main (String[] args) –O public é um modificador de visibilidade (faz o método ser público). –O static diz que o método pertence à classe e não aos seus objetos Conceitos vistos no exemplo Vamos ver estes conceitos com mais detalhes mais adiante!

31 Programação Orientada a Objeto - Aula 131 System.out.println("Hello World!"); –System.out é o objeto de saída padrão –Ele permite aos aplicativos Java escrever na janela de comando a partir do qual o aplicativo Java é executado. –O método println imprime uma linha colocando um CRLF no fim. –O método print faz o mesmo, só que sem o CRLF Os caracteres de escape \n, \t, etc. que conhecíamos do printf também valem para o print e para o println. Conceitos vistos no exemplo

32 Programação Orientada a Objeto - Aula 132 Como compilar o código usando JDK? Janela MS- DOS O arquivo fonte.java deve sempre ter esta extensão Executando o compilador Arquivo.class gerado

33 Programação Orientada a Objeto - Aula 133 Aplicativos Java Existem dois tipos de programas Java: –Aplicativos : Ùprogramas semelhantes a processador de textos, planilhas, etc. que normalmente são armazenados e executados localmente. Ùsão carregados na memória usando-se o interpretador Java. –Applets : Ùprogramas pequenos que normalmente são armazenados em um computador ao qual o usuário se conecta remotamente via web. ÙSão carregados e executados via appletviewer e precisam ser chamados através de uma página html.

34 Programação Orientada a Objeto - Aula 134 Como executar o código? Executando o interpretador Java Saída do programa e término

35 Programação Orientada a Objeto - Aula 135 Importante O diretório onde ficam o compilador (javac) e o interpretador (java) Java deve ser acrescentado ao PATH do DOS Se formos re-utilizar classes que nós mesmos criamos, devemos colocar seus diretórios no CLASSPATH do DOS Vamos voltar a este tema mais adiante neste curso. As duas mudanças podem ser feitas no próprio AUTOEXEC.BAT, para que quando o micro seja ligado, elas sejam automaticamente implementadas. O diretório corrente não necessariamente estará sendo buscado pelo interpretador java. Acerte as variáveis de ambiente.

36 Programação Orientada a Objeto - Aula 136 Segundo exemplo //Este é o nosso segundo exemplo em Java import javax.swing.JOptionPane; public class HelloWorld { public static void main (String[] args) { JOptionPane.showMessageDialog(null, "Hello World!"); System.exit(0); }

37 Programação Orientada a Objeto - Aula 137 Conceitos vistos neste exemplo import javax.swing.JOptionPane; –Esta instrução serve para identificar e carregar classes requeridas para compilar um programa java. –Existem muitas classes prontas em Java, como a classe Swing que contém elementos que nos ajudam a definir interfaces gráficas com os usuários. –Existem elementos para diálogos, botões, janelas, etc. Se tivermos tempo, veremos também as interfaces gráficas ao fim deste curso. Mas não vamos correr mais por causa disto!

38 Programação Orientada a Objeto - Aula 138 Biblioteca de classes Uma biblioteca de classes é uma coleção de classes que podemos usar quando desenvolvemos programas. Existe uma biblioteca padrão de classes Java que é parte de qualquer ambiente de desenvolvimento Java Estas classes não são parteda linguagem Java per se, mas nós nos baseamos bastante nelas. As bibliotecas de classes Java são equivalente às bibliotecas do C

39 Programação Orientada a Objeto - Aula 139 Várias classes que usaremos, como a System e a String são parte da biblioteca padrão de classes Java Outras bibliotecas de classes podem ser adquiridas com fabricantes de software ou criadas por você mesmo. Biblioteca de classes Não seja teimoso! Desenvolver novamente classes já existentes é simplesmente tolice - causa erros e perda de performance!

40 Programação Orientada a Objeto - Aula 140 Pacotes As classes da biblioteca padrão Java são organizadas em pacotes. Alguns dos pacotes da biblioteca padrão são: Pacote java.lang java.applet java.awt javax.swing java.net java.util Propósito Suporte genérico Criar applets para a web Interfaces gráficas e gráficos Capacidades e componetes gráficos adicionais Comunicação em rede Utilidades variadas

41 Programação Orientada a Objeto - Aula 141 A declaração import Quando queremos usar uma classe de um pacote, pode usar seu nome totalmente qualificado java.util.Random Outra opção é importar a classe, e depois usar o nome da classe: import java.util.Random; Para importar todas as classes em um pacote específico, você pode usar o caracter curinga * import java.util.*;

42 Programação Orientada a Objeto - Aula 142 Todas as classes do pacote java.lang são automaticamente importadas em nossos programas É por isto que não precisamos de um import no primeiro exemplo. A declaração import Não é necessário estourar a cabeça tentando entender a fundo agora os conceitos de classes e pacotes. Nós os veremos com mais cuidado mais a frente neste curso!

43 Programação Orientada a Objeto - Aula 143 Conceitos vistos neste exemplo System.exit(0); –Esta instrução serve para finalizar o nosso programa. –Todo programa com interface gráfica precisa ser finalizado desta forma, para que termine corretamente. –Caso não o façamos, nossa janela de comando não voltará a funcionar corretamente.

44 Programação Orientada a Objeto - Aula 144 Pergunta razoável Se eu preciso importar um arquivo para usar a classe JOptionPane, porque não preciso importar uma classe para usar a classe System e seu objeto out?

45 Programação Orientada a Objeto - Aula 145 Resposta A classe System é parte do pacote java.lang Lembre-se que este pacote padrão é importado automaticamente em todo programa Java

46 Programação Orientada a Objeto - Aula 146 Terceiro exemplo import javax.swing.JOptionPane; public class Soma1 { public static void main (String[] args) { int n1,n2,soma; String s1,s2; s1=JOptionPane.showInputDialog(Prim Num. :"); s2=JOptionPane.showInputDialog(Seg. Num. :"); n1=Integer.parseInt(s1); n2=Integer.parseInt(s2); soma=n1+n2; JOptionPane.showMessageDialog(null,A soma é+soma); System.exit(0); }

47 Programação Orientada a Objeto - Aula 147 Conceitos vistos neste exemplo import javax.swing.JOptionPane; –Esta instrução serve para identificar e carregar classes requeridas para compilar um programa java, informando ao compilador onde pode encontrá- las (no caso, no diretório javax). public class Soma1 { –Inicia as definições da classe Soma1. –Como é uma classe pública, ela deve estar em um arquivo denominado Soma1.java –A chave indica o começo do bloco de definições. Não esqueça que ela tem que ser fechada quando este terminar.

48 Programação Orientada a Objeto - Aula 148 Conceitos vistos neste exemplo Declarações de variáveis –Como em todas as linguagens compiladas, precisamos declarar as variáveis que usamos. –Declarações consistem do tipo da variável, seu nome e um ponto-e-vírgula. –Se tivermos mais de uma variável do mesmo tipo, podemos colocá-las na mesma declaração, separadas por vírgulas. –É boa prática de programação dar para as variáveis nomes descritivos da sua verdadeira função.

49 Programação Orientada a Objeto - Aula 149 Conceitos vistos neste exemplo int n1,n2,soma; –Estamos declarando variáveis do tipo inteiro. –Existem outros tipos numéricos, para armazenar números racionais (float e double). String s1,s2; –Estamos declarando objetos da classe String. Como dissemos antes, não vamos nos aprofundar nos conceitos de Java neste momento. Mais a frente nós discutiremos todos estes conceitos mais profundamente.

50 Programação Orientada a Objeto - Aula 150 Conceitos vistos neste exemplo s1=JOptionPane.showInputDialog(Prim Num. :"); –Estamos usando um método da classe JOptionPane que realiza uma entrada de dados. –Este método retorna uma string. n1=Integer.parseInt(s1); –Java é uma linguagem muito mais rigorosamente tipada do que o C. –Não é possível realizar typecasting automático na maioria dos casos. –Temos que chamar uma função (no caso um método da classe Integer) para poder converte a string entrada na instrução anterior em um inteiro para realizarmos a soma. Existe o tipo int e a classe Integer, que é denominada uma wrapper class do tipo. Mais à frente veremos isto com detalhes.

51 Programação Orientada a Objeto - Aula 151 Quarto exemplo import javax.swing.JOptionPane; public class Max1 { public static void main (String[] args) { int n1,n2,max; n1=Integer.parseInt(JOptionPane.showInputDialog(Prim Num. :")); n2=Integer.parseInt(JOptionPane.showInputDialog(Seg Num. :")); if (n1>n2) { max=n1; } else { max=n2; } JOptionPane.showMessageDialog(null,O máximo é +max); System.exit(0); }

52 Programação Orientada a Objeto - Aula 152 if (n1>n2) { –O if é uma statement condicional, que permite que tomemos decisões/escolhamos um curso de ação em nossos programas. –A statement if tem o seguinte formato: Ùif (condição) statement1 else statement2 –onde: Ùcondição é uma expressão booleana (lógica) Ùstatement1 é executada se a condição é avaliada como verdadeira. Ùstatement2 é executada se a condição é avaliada como falsa. –A cláusula else é opcional Conceitos vistos neste exemplo A statement1 e a statement2 podem ser substituídas por um bloco de statements, mas neste caso não podemos esquecer das chaves em torno deste bloco.

53 Programação Orientada a Objeto - Aula 153 Quinto Exemplo import javax.swing.JOptionPane; public class Max1 { public static void main (String[] args) { int i,soma; i=1; soma=0; while (i<=10) { soma+=Integer.parseInt(JOptionPane.showInputDialog(Num :")); i++; } JOptionPane.showMessageDialog(null,A soma é +soma); System.exit(0); }

54 Programação Orientada a Objeto - Aula 154 Conceitos vistos neste exemplo while (i<=10) { –Statements de repetição nos permitem repetir ações dentro de nossos programas –Existem três tipos de estruturas de repetição em Java Ùfor statement Ùdo statement Ùwhile statement Compromisso: Veremos todas com cuidado depois!

55 Programação Orientada a Objeto - Aula 155 O comando while permite que um statement (ou bloco de statements) seja repetido até que uma determinada condição seja verdadeira. Formato geral: –while(condition){ statement(s) } Onde: –condição é uma expressão booleana –a(s) statement(s) sendo repetidas alteram o valor da condição para false em algum momento Conceitos vistos neste exemplo

56 Programação Orientada a Objeto - Aula 156 Comportamento do while Na primeira vez que o loop é executado, a condição é avaliada. Se ela for falsa, não se executa as statements dentro do loop nenhuma vez. Se for verdadeira, executam-se todas as statements do loop e volta- se para o começo para avaliar a condição novamente. Este passo é repetido até que a condição seja falsa. Isto implica que as statements podem executar qualquer número de vezes (de zero a infinito!)

57 Programação Orientada a Objeto - Aula 157 Fim da aula Já temos uma boa introdução. Melhorem-na, fazendo os exercícios!


Carregar ppt "Programação Orientada a Objeto - Aula 11 Introdução à Orientação a Objetos Prof. Ricardo Linden."

Apresentações semelhantes


Anúncios Google