1 / 57

Introdução à Orientação a Objetos Prof. Ricardo Linden

Introdução à Orientação a Objetos Prof. Ricardo Linden. 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)

glynn
Download Presentation

Introdução à Orientação a Objetos Prof. Ricardo Linden

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 Programação Orientada a Objeto - Aula 1

  3. 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” Programação Orientada a Objeto - Aula 1

  4. 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 Programação Orientada a Objeto - Aula 1

  5. 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. Programação Orientada a Objeto - Aula 1

  6. 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 Programação Orientada a Objeto - Aula 1

  7. 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. 00-123961 representa um objeto (instância) da classe “Reserva”. - “Meu Fusquinha” representa uma instância da classe “Veículo” Programação Orientada a Objeto - Aula 1

  8. 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” Programação Orientada a Objeto - Aula 1

  9. 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 Programação Orientada a Objeto - Aula 1

  10. 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 Programação Orientada a Objeto - Aula 1

  11. 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 ( ) Programação Orientada a Objeto - Aula 1

  12. 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. Programação Orientada a Objeto - Aula 1

  13. 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. Programação Orientada a Objeto - Aula 1

  14. Classe: Cadeira 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 subclasses Cadeira de Escritório Cadeira de Balanço Programação Orientada a Objeto - Aula 1

  15. 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. Programação Orientada a Objeto - Aula 1

  16. 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 + 2 + 3 (adição inteira) 3.2 + 2.5 (adição real) Programação Orientada a Objeto - Aula 1

  17. 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 Programação Orientada a Objeto - Aula 1

  18. 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) Programação Orientada a Objeto - Aula 1

  19. 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. Programação Orientada a Objeto - Aula 1

  20. 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. Programação Orientada a Objeto - Aula 1

  21. 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. Compilador Java Arquivo Class Java Interpretador Java Código Fonte Java Executar Programa Programação Orientada a Objeto - Aula 1

  22. 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 Programação Orientada a Objeto - Aula 1

  23. Editando seus programas • 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. 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 Programação Orientada a Objeto - Aula 1

  24. 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! Programação Orientada a Objeto - Aula 1

  25. 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!"); } } Programação Orientada a Objeto - Aula 1

  26. 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. Programação Orientada a Objeto - Aula 1

  27. Conceitos vistos no exemplo • 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) Programação Orientada a Objeto - Aula 1

  28. Conceitos vistos no exemplo • 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 Programação Orientada a Objeto - Aula 1

  29. Conceitos vistos no exemplo • { } • 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. Programação Orientada a Objeto - Aula 1

  30. Conceitos vistos no exemplo • 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 Vamos ver estes conceitos com mais detalhes mais adiante! Programação Orientada a Objeto - Aula 1

  31. Conceitos vistos no exemplo • 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. Programação Orientada a Objeto - Aula 1

  32. 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 Programação Orientada a Objeto - Aula 1

  33. 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. Programação Orientada a Objeto - Aula 1

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

  35. 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. Programação Orientada a Objeto - Aula 1

  36. 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); } } Programação Orientada a Objeto - Aula 1

  37. 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! Programação Orientada a Objeto - Aula 1

  38. 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 Programação Orientada a Objeto - Aula 1

  39. Biblioteca de classes • 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. Não seja teimoso! Desenvolver novamente classes já existentes é simplesmente tolice - causa erros e perda de performance! Programação Orientada a Objeto - Aula 1

  40. Pacotes • As classes da biblioteca padrão Java são organizadas em pacotes. • Alguns dos pacotes da biblioteca padrão são: 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 Pacote java.lang java.applet java.awt javax.swing java.net java.util Programação Orientada a Objeto - Aula 1

  41. 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.*; Programação Orientada a Objeto - Aula 1

  42. A declaração import • 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. 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! Programação Orientada a Objeto - Aula 1

  43. 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. Programação Orientada a Objeto - Aula 1

  44. 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? Programação Orientada a Objeto - Aula 1

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

  46. 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); } } Programação Orientada a Objeto - Aula 1

  47. 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. Programação Orientada a Objeto - Aula 1

  48. 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. Programação Orientada a Objeto - Aula 1

  49. 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. Programação Orientada a Objeto - Aula 1

  50. 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. Programação Orientada a Objeto - Aula 1

More Related