Upload
juliano-weber
View
213
Download
2
Embed Size (px)
Citation preview
Prof. Msc. Juliano Gomes Weber
Linguagem de programação III
Notas de Aula – Aula 01
1º Semestre - 2010
UNIJUÍ – DETEC – Ciência da Computação
• Objetivo da aula de hoje
• Apresentações:• Tópicos que serão abordados na disciplina;• Alunos;• Professor;
• Sistemática de avaliação; • Revisão de conteúdo base para esta disciplina;
Tecnologias Web [email protected]
Tópicos que serão abordados na disciplina
Persistência de Objetos - Banco de dados e Java
Programação em Rede - Sockets
Programação para Internet
Principal ferramenta NETBEANS IDE
Sobre vocês ? Apresentação individual
Semestre letivo individual? Trabalha na área? Experiência com programação? Experiência com Java?
Sobre o Professor Formação
Bacharel em informática UNIJUI – 2001 Mestre em Computação - UFSM - 2009
Histórico Profissional Unijuí - Programador Sênior; Unicruz - Professor do curso de Ciência da computação; Escola técnicas, Sistemas comercias, sistemas para internet; Desenvolvimento de sistemas complexos;
Análise e desenvolvimento de sistemas;
Sistemática de avaliação
Avaliação contínua e individual; Trabalho para a disciplina (será definido em breve); Provas; Trabalhos individuais;
Início da revisão - Orientação à objetos
Utiliza uma perspectiva mais humana de
observação da realidade, incluindo objetos,
classificação e compreensão hierárquica
Contexto Histórico
A crise do desenvolvimento do software: Demanda muito superior à capacidade de
desenvolvimento; Qualidade insuficiente dos produtos; Estimativas de custo e tempo raramente
cumpridas nos projetos. Surge a Engenharia de Software
Engenharia de Software
Busca organizar esforços no desenvolvimento
de ferramentas, metodologias e ambientes de
suporte ao desenvolvimento de software
Programação Orientada a Objetos
Foco nos dados (objetos) do sistema, não nas funções
Estruturação do programa é baseada nos dados, não nas funções
As funções mudam mais do que os dados
Paradigma Orientado a Objetos
Pressupõe que o mundo é composto por objetos
Objeto é uma entidade que combina estrutura de dados e comportamento funcional
Os sistemas são modelados como um número de objetos que se interagem
Paradigma Orientado a Objetos
A orientação a objetos surgiu nos primórdios da década de 70, com as linguagens ADA, SIMULA e Small Talk.
Ficou bastante difundida nos anos 80, com linguagens como o C++, e teve uma recente explosão em difusão nos anos 90, através da linguagem Java.
Hoje é um padrão de fato!
Encapsulamento
Usado para esconder detalhes de implementação
Não é necessário saber como a classe está implementada para chamar o método necessário.
Basta saber a interface do método
Os atributos de um objeto só devem ser manipulados pelos métodos do próprio objeto (orientação a objeto pura).
Variáveis da Instância X da Classe
Variáveis da classe
Só existe uma cópia de cada variável Todos as instâncias acessam a mesma cópia das variáveis São criadas apenas uma vez assim que o sistema reconhece a
classe
Variáveis da Instância
Existe uma cópia para cada instância criada Cada instância acessa a sua cópia São criadas sempre quando uma nova instância é gerada
Identificando Objetos
Em uma sala existe um conjunto de objetos físicos que podem ser facilmente identificados, modelados e classificados como objetos OO.
Mas em um problema onde o espaço é uma aplicação de software, os objetos podem não ser facilmente encontrados.
Identificando Objetos
Os objetos podem ser identificados analisando-se o problema ou fazendo um “parser gramatical” do texto contendo a descrição do problema
Objetos são determinados sublinhando-se cada substantivo;
Objetos
Mundo real formado por elementos: Objetos Objetos podem ser coisas concretas ou
abstratas Ex: Carro, Pessoa, Emissão de Nota, etc
Estado do Objeto
Conjunto de suas propriedades associadas a seus valores correntes
Propriedades geralmente referenciadas como Atributos
Ex:Propriedades: Cor = Vermelha Ano = 2001 Velocidade = 0 Km/h Combustível = Gasolina
Comportamento do Objeto Conjunto de serviços ou operações que
outros objetos podem requisitar Operações geralmente referenciadas
como Métodos Representa como o objeto reage às
Mensagens a ele enviadas Ex Operações
Acelerar ( ) Frear ( ) Acender Faróis ( ) Virar a Direita ( )
Identidade Única
Objetos têm existência própria São distintos mesmo se seus estados e
comportamento forem iguais Identificador que permite referência
inequívoca Ex
Ferrari do Luciano
Classes
No mundo real, diferentes objetos desempenham o mesmo papel
A estrutura e o comportamento comuns dos objetos podem ser agrupados
Automóveis
Classes
Modelo que descreve a estrutura e o comportamento de objetos comuns = Classe
Objetos que se comportam da maneira especificada pela classe são ditos Instâncias dessa classe
Ex
Ferrari do Luciano é um Instância da Classe Automóvel
Classe abstrata
Pelo menos um de seus métodos está declarado mas não têm implementação associada. Método abstrato: método sem implementação
Não gera instância
Só pode ser usada como base para outras classes herança
Cada subclasse deverá implementar o método abstrato da superclasse (classe abstrata)
Exemplo
telefone
Pessoa
alterarTelefone(tel.)
telefone
Professor
alterarTelefone(tel.)
telefone
Aluno
alterarTelefone(tel.)
abstratos
Polimorfismo
Polimorfismo é a habilidade de diferentes instâncias, de classes diferentes, responderem a mesma mensagem de diferentes maneiras. executar métodos com a mesma assinatura mas implementados
de maneira diferente
Classe polimórfica: quando instâncias suas ou instâncias de classes derivadas suas
possuem mensagens que nem sempre são respondidas da mesma maneira - a resposta irá depender do contexto da execução.
Restrição de acesso (métodos e atributos)
Public: sem restrição. Qualquer objeto pode acessar tal método/atributo
Private: apenas o objeto que possui o método/atributo pode acessa-lo
Protect: apenas os objetos das classes do mesmo pacote podem acessar o método/atributo
Default: atributo -> C++: private / JAVA: private método -> C++: private / JAVA: public
Definindo Classes em Java
public class NomeDaClasse { CorpoDaClasse }
O corpo de uma classe pode conter • atributos• métodos• construtores (inicializadores)• outras classes...
Exemplo
public class LeImprime {
/** Lê e imprime um string */
public static void main(String[] args) {
String nome;
nome = Util.readStr();
System.out.println(nome);
}}
Definindo Atributos em Java
cada atributo tem um tipo específico que caracteriza as propriedades dos objetos da classe
int e String denotam os tipos cujos elementos são inteiros e strings
public class Livro { private int anoDePublicacao; private int numeroDePaginas; private String titulo; ...}
Tipos em Java
Primitivos char int boolean double ...
Referência classes (String,
Object, Livro, Conta, etc.)
interfaces arrays
Os elementos de um tipo primitivo são valores, enquanto os elementos de um tipo referência
são (referências para) objetos!
Definindo Atributos em Javapublic class Pessoa { private int anoDeNascimento; private String nome, sobrenome; private boolean casado = false; ...}
vários atributos de um mesmo tipo podem ser declarados conjuntamente
podemos especificar que um atributo deve ser inicializado com um valor específico
Definindo Métodos em Javapublic class Conta { private String numero; private double saldo;
public void creditar(double valor) { saldo = saldo + valor; } ... }
Um método é uma operação que realiza ações e modifica os valores dos atributos do objeto
responsável pela sua execução
Definindo Métodos em Javapublic class Conta { ...
public void debitar(double valor) { saldo = saldo - valor; }}
corpo do método
parâmetros do método
tipo de retorno
Por quê o debitar não tem como parâmetroo número da conta?
Outro exemplo...
public class <nome> { public static void main (<parametros>) { <declarações> <comandos> }} Onde, main: método por onde se inicia a execução public: parâmetro de acesso static: indica que main se aplica à classe void: indica que main não retorna um valor
Definindo Métodos em Java
O tipo do valor a ser retornado pelo método Nome do método Lista, possivelmente vazia, indicando o tipo e
o nome dos argumentos a serem recebidos pelo método
Usa-se void para indicar que o método não retorna nenhum valor, apenas altera os valores dos atributos de um objeto
Definindo Métodos em Javapublic class Conta { private String numero; private double saldo; public String getNumero() { return numero; } public double getSaldo() { return saldo; } ...}
Os métodos que retornam valores comoresultado usam o comando return
O Corpo do Método
Comandos que determinam as ações do método
Estes comandos podem realizar simples atualizações dos atributos de um
objeto retornar valores executar ações mais complexas como se
comunicar com outros objetos
Comunicação entre objetos Os objetos se comunicam para realizar tarefas A comunicação é feita através da troca de
mensagens ou chamada de métodos Cada mensagem é uma requisição para que
um objeto execute uma operação específica
conta.creditar(45.30)
variável contendoreferência para objeto
nome do método a serexecutado