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

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

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

Apresentações semelhantes


Apresentação em tema: "Introdução à Orientação a Objetos Prof. Ricardo Linden"— Transcrição da apresentação:

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

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

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

15 Programação Orientada a Objeto - Aula 1
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 Programação Orientada a Objeto - Aula 1
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) (adição real) Programação Orientada a Objeto - Aula 1

17 Programação Orientada a Objeto - Aula 1
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 Programação Orientada a Objeto - Aula 1
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 Programação Orientada a Objeto - Aula 1
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 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 Programação Orientada a Objeto - Aula 1
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 Programação Orientada a Objeto - Aula 1
Como executar o código? Executando o interpretador Java Saída do programa e término Programação Orientada a Objeto - Aula 1

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

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

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

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

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

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

55 Conceitos vistos neste exemplo
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 Programação Orientada a Objeto - Aula 1

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

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


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

Apresentações semelhantes


Anúncios Google