aula 1 - linguagem iii

43
[email protected]. br Prof. Msc. Juliano Gomes Weber ([email protected]) Linguagem de programação III Notas de Aula – Aula 01 1º Semestre - 2010 UNIJUÍ – DETEC – Ciência da Computação

Upload: juliano-weber

Post on 31-Jul-2015

213 views

Category:

Technology


2 download

TRANSCRIPT

[email protected]

Prof. Msc. Juliano Gomes Weber

([email protected])

Linguagem de programação III

Notas de Aula – Aula 01

1º Semestre - 2010

UNIJUÍ – DETEC – Ciência da Computação

[email protected]

• 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

Procedimental vs OO

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!

Benefícios da OO

Reutilização

Extensibilidade

Manutenção

Redução na quantidade de erros

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, classes, métodos e atributos

Detalhando...

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

OO e JAVA

Como implementar o paradigma OO em java?

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

Exercício

Crie uma classe Pessoa com 2 atributos

Crie uma classe Aluno que seja uma classe filha da classe Pessoa