1. UNIJUÍ – DETEC – Ciência da Computação
Prof. Msc. Juliano Gomes Weber
(jgw@unijui.edu.br)
Linguagem de programação III
Notas de Aula – Aula 01
1º Semestre - 2010
jgw@unijui.edu.br
2. •
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;
jgw@unijui.edu.br
3.
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
Tecnologias Web
jgw@unijui.edu.br
4. Sobre vocês ?
Apresentação individual
Semestre letivo individual?
Trabalha na área?
Experiência com programação?
Experiência com Java?
5.
Formação
Sobre o Professor
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;
7. 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
8. 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
9. Engenharia de Software
Busca organizar esforços no desenvolvimento
de ferramentas, metodologias e ambientes de
suporte ao desenvolvimento de software
10. 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
11. 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
13. 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!
14. Benefícios da OO
Reutilização
Extensibilidade
Manutenção
Redução
na quantidade de erros
15. 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).
16. 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
17. 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.
18. 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;
20. Objetos
Mundo
real formado por elementos: Objetos
Objetos podem ser coisas concretas ou
abstratas
Ex: Carro, Pessoa, Emissão de Nota, etc
21. 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
22. 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
Operações
Ex
Acelerar ( )
Frear ( )
Acender Faróis ( )
Virar a Direita ( )
23. 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
24. Classes
No
mundo real, diferentes objetos
desempenham o mesmo papel
Automóveis
A
estrutura e o comportamento comuns
dos objetos podem ser agrupados
25. 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
26. 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)
28. 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.
29. 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
30. OO e JAVA
Como
java?
implementar o paradigma OO em
31. Definindo Classes em Java
public class NomeDaClasse {
CorpoDaClasse
}
O corpo de uma classe pode conter
• atributos
• métodos
• construtores (inicializadores)
• outras classes...
32. Exemplo
public class LeImprime {
/** Lê e imprime um string */
public static void main(String[] args) {
String nome;
nome = Util.readStr();
System.out.println(nome);
}
}
33. Definindo Atributos em Java
public class Livro {
private int anoDePublicacao;
private int numeroDePaginas;
private String titulo;
...
}
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
35. Definindo Atributos em Java
public 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
36. Definindo Métodos em Java
public 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
37. Definindo Métodos em Java
public class Conta {
...
}
parâmetros
do método
public void debitar(double valor) {
saldo = saldo - valor;
}
tipo de
retorno
corpo do
método
Por quê o debitar não tem como parâmetro
o número da conta?
38. 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
39. 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
40. Definindo Métodos em Java
public class Conta {
private String numero;
private double saldo;
}
public String getNumero() {
return numero;
}
public double getSaldo() {
return saldo;
}
...
Os métodos que retornam valores como
resultado usam o comando return
41. 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
42. 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 contendo
referência para
objeto
nome do
método a ser
executado
43. Exercício
Crie
Crie
uma classe Pessoa com 2 atributos
uma classe Aluno que seja uma classe
filha da classe Pessoa