Buscar

ltp2_parte1

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
*
Linguagem e Técnicas de Programação 2 – LTP2
Prof. Marcos Paulo
*
*
*
Ementa
_____________________
Conceitos e Terminologia; 
Abstração; 
Classes e Objetos; 
Atributos e Métodos; 
Pacotes de classes, Visibilidade, Encapsulamento, Métodos Construtores e Destrutores, Herança, Polimorfismo;
Aplicativos com Componentes de Interface Gráfica; Layout de Janelas, Controle de Eventos; Tratamento de Exceções.
*
*
*
Justificativa
_____________________
Conhecer e saber implementar as técnicas de orientação a objetos, criação de aplicativos com componentes de interface gráfica e uso de tratamento de exceções.
*
*
*
Competências e Habilidades
_____________________
Habilidade de utilizar um ambiente de desenvolvimento de programação;
Habilidade de aplicar os principais conceitos de linguagem estruturada atreladas ao conceito de programação orientada à objeto em problemas do mundo real.
*
*
*
Avaliação
_____________________
1º BIMESTRE: Prova escrita (8.0 pt) + Trabalhos (2.0 pt)
2º BIMESTRE: Prova escrita (6.0 pt) + Trabalhos (4.0 pt)
Presença dos alunos é parte do processo de avaliação.
Obs1: Para obter até 1.0 pt para aprovação do segundo bimestre ou final, é necessário 100% de presença.
Obs2: Para realização da prova de segunda oportunidade, o aluno deverá entrar com requerimento no protocolo até três dias após a data da prova.
*
*
*
Avaliação
_____________________
O trabalho do 2° bimestre será feito em conjunto com as seguintes disciplinas:
Multimídia e Interatividade - Marcos Douglas
Estruturas de Dados - Ricardo Casseb
*
*
*
Bibliografia Básica
_____________________
DEITEL, H. M.; DEITEL, P. J. Java: Como Programar. 
FURGERI, Sérgio. Java: Ensino Didático - Desenvolvendo e Implementando Aplicações.
*
*
*
Bibliografia Complementar
_____________________
CORNELL, Gary; HORSTMANN, Cay S. Core Java 2: Fundamentos.
LEMAY, Laura; PERKINS, Charles L. Aprenda em 21 dias Java. 2.
*
*
*
Qual a motivação para estudarmos
Orientação a Objetos ?
_____________________
Para produzirmos sistemas com maior qualidade e produtividade.
Para fazermos uma análise e projeto coerentes com as linguagens de programação orientadas a objetos.
Orientação a objetos é uma maneira de programar que ajuda na organização e resolve muitos problemas enfrentados pela programação procedural.
*
*
*
Programação procedural
_____________________
Consideremos o clássico problema da validação de um CPF. 
Normalmente, temos um formulário, no qual recebemos essa informação, e depois temos que enviar esses caracteres para uma função que irá validá-lo, como no pseudo-código abaixo:
cpf = formulario->campo_cpf
valida(cpf)
*
*
*
Problemas na programação procedural
_____________________
Desafios
Validar o CPF sempre e nunca esquecer
Equipes com vários programadores podem ter dificuldades
Novos programadores
Mais problemas...
Acrescentar novas funções: validar idade e acrescentar novas condições (if) 
*
*
*
Problemas na programação procedural
_____________________
Espalhar validações pelo código não é recomendável
Erros nas redundâncias
Esquecimentos
Revisão de código
*
*
*
Soluções
_____________________
Seria interessante poder concentrar essa responsabilidade em um lugar só, para não ter chances de esquecer isso
Melhor ainda seria se conseguíssemos mudar essa validação e os outros programadores nem precisassem ficar sabendo disso
Eles criariam formulários e um único programador seria responsável pela validação: os outros nem sabem da existência desse trecho de código
*
*
*
Orientação a objetos
_____________________
Programação orientada a objetos é uma técnica de programação de sistemas que concentra-se nos conceitos de objetos, e estes são abstraídos dentro de um determinado contexto de um problema.
*
*
*
O que são Objetos?
_____________________
É uma entidade individual que possui característica ou atributos (dados ou estados) e comportamento (métodos ou funções, que atuam sobre ele).
Ex: Automóvel 
Atributos: cor=vermelha; ano de fabricação=1998
Comportamento: se movimentar para frente
Cada objeto tem a sua própria região de memória, que pode ser composta por outros objetos, também.
Exemplo: o objeto carro pode ser composto pelos objetos lataria, rodas, motor, etc.
Entidade que formaliza o modo pelo qual compreendemos algo no domínio de um problema.
*
*
*
Estrutura de um objeto
_____________________
Os objetos possuem identidade (referência);
Atributos representam as propriedades de um determinado objeto;
Métodos representam as funcionalidades de um objeto;
Os métodos são utilizados para verificar ou para alterar as propriedades de um objeto.
Objeto X
Nome=‘X’;
alterarNome()
*
*
Classes de Objetos
Uma classe é um modelo para criação de objetos de um determinado tipo a partir de um sistema real ou imaginário. Ela pode conter dados (atributos) e funcionalidades (métodos).
Ex: 
Classes representam a especificação para os objetos
João
Maria
Ana
Classe de Seres Humanos
*
*
Instância de Classe
As classes são modelos a partir dos quais podem ser criados objetos.
A criação de um objeto a partir de uma classe é chamado de Instanciação.
As classes definem métodos e atributos, e objetos são instâncias de classe, cada um com seus valores particulares de atributo.
Objeto é uma entidade concreta e a classe é uma abstração.
Projeto Computador X
 atributos: 
 gabinete, velocidade.
 métodos:
 rodar CD/DVD, acessar rede.
Objeto IBM X 
*
*
*
Abstração
_____________________
Significa separar o que é essencial daquilo que é menos relevante no problema, buscando facilitar o entendimento.
Uma abstração é uma visualização ou uma representação de uma entidade que inclui somente os atributos de importância em um contexto particular.
Abstrair consiste no processo de retirar do domínio do problema os detalhes relevantes e representá-los não mais na linguagem do domínio, e sim na linguagem da solução.
*
*
*
Abstração de problemas
_____________________
Objetivo: Realizar um programa de cadastro de livros
Quando nos observamos uma realidade (domínio do problema) e capturamos a sua estrutura (obtendo entidades, ações, relacionamentos relevantes ao problema), teremos como resultado um Modelo Conceitual. 
Através da representação, o modelo conceitual poderá ser “materializado”, segundo alguma tipo de convenção (ex: maquete, desenho, texto,diagrama...)
Biblioteca: livros, usuários, etc.
public class Usuario {
 String nome;
}
*
*
*
Abstração de problemas
_____________________
*
*
*
Aplicando os conceitos de Classes e 
Objetos
_____________________
Vamos imaginar o desenvolvimento de um sistema de conta básica de um Banco.
O elemento principal desse sistema é a CONTA.
*
*
*
Analisando os Dados
_____________________
O que toda conta tem e é importante?
número da conta
 nome do cliente
 saldo
 limite
*
*
*
Funcionalidades
_____________________
O que toda conta faz e é importante? Isto é, o que gostaríamos de “pedir à conta”.
saca uma quantidade x
deposita uma quantidade x
imprime o nome do dono da conta
devolve o saldo atual
transfere uma quantidade x para uma outra conta y
devolve o tipo de conta
*
*
*
Projetos de Conta
_____________________
Com isso, temos o projeto de uma conta bancária. Podemos pegar esse projeto e acessar seu saldo? Não.
O que temos ainda é o projeto. 
Antes, precisamos construir uma conta, para poder acessar o que ela tem, e pedir a ela que faça alguma coisa.
*
*
*
Especificação de Conta
_____________________
Utilizamos a especificação da Conta para poder criar instâncias que realmente são contas, onde podemos realizar
as operações que criamos.
Apesar de declararmos que toda conta tem um saldo, um número e uma agência, são nas instâncias desse projeto que realmente há espaço para armazenar esses valores.
Especificação de Conta
*
*
*
Classes e Objetos
_____________________
Ao projeto da conta, isto é, a definição da conta, damos o nome de classe. 
Ao que podemos construir a partir desse projeto, as contas de verdade, damos o nome de objetos.
Especificação de Conta
*
*
*
Classes e Objetos
_____________________
*
*
*
Partes que compõem uma classe
_____________________
Uma classe é formada basicamente por dois elementos: atributos e métodos.
Atributos são elementos pertencentes à própria classe, destinado a armazenar informações que serão instanciadas.
Ex:
class Conta {
int numero;
String nome;
double saldo;
double limite;
}
*
*
*
Atributos
_____________________
Quando uma variável é declarada diretamente dentro do escopo da classe (fora do método main), é chamada de variável de objeto, ou atributo.
class Conta {
int numero;
String nome;
double saldo;
double limite;
}
*
*
*
Criando e usando um objeto
_____________________
Agora, temos uma classe em Java que especifica o que todo objeto dessa classe deve ter. 
Além dessa classe, ainda teremos o Programa.java e a partir dele é que iremos utilizar a classe Conta.
Para instanciar (contruir) uma Conta, basta usar a palavra chave new, utilizamos também os parênteses.
Obs: Utiliza-se o método main tornar uma classe em uma aplicação (public static void main (String args []).).
*
*
*
Criando e usando um objeto
_____________________
 class Programa {
 public static void main(String[] args) {
 new Conta();
 }
 }
Bem, o código acima cria um objeto do tipo Conta, mas como acessar esse objeto que foi criado? 
Precisamos ter alguma forma de nos referenciarmos a esse objeto. Precisamos de uma variável:
 class Programa {
 public static void main(String[] args) {
 Conta minhaConta;
 minhaConta = new Conta();
 }
 }
*
*
*
Objetos são acessados por referências
_____________________
Quando declaramos uma variável para associar a um objeto, na verdade, essa variável não guarda o objeto, e sim uma maneira de acessá-lo, chamada de referência.
class Programa {
 public static void main(String[] args) {
 Conta C1;
 C1 = new Conta();
 Conta C2;
 C2 = new Conta();
 }
 }
C1 e C2 são variáveis de referência do tipo Conta, e não são objetos.
*
*
*
Usando um objeto
_____________________
Através da variável C1, agora, podemos acessar o objeto recém criado para alterar seu nome, seu saldo etc.;
É importante fixar que o ponto foi utilizado para acessar algo em C1. 
class Programa {
 public static void main(String[] args) {
 Conta C1;
 C1 = new Conta();
 C1.nome = “João";
 C1.saldo = 1000.0;
 System.out.println("Saldo atual: " + C1.saldo);
 }
 }
*
*
*
Métodos de uma classe
_____________________
Dentro da classe, também será declarado o que cada conta faz e como isto é feito - os comportamentos que cada classe tem, isto é, o que ela faz. 
Por exemplo, de que maneira que uma Conta saca dinheiro?
Especificaremos isso dentro da própria classe Conta, e não em um local desatrelado das informações da própria Conta. 
É por isso que essas “funções” são chamadas de métodos. 
É a maneira de fazer uma operação com um objeto.
*
*
*
Métodos de uma classe
_____________________
Os métodos podem realizar operações com os atributos ou ainda realizar operações com objetos;
Métodos são trechos de programas que recebem um nome e podem ser chamados várias vezes durante a execução de um programa.
 Sintaxe: 
 tipo-do-retorno nome-do-método(argumentos)
*
*
*
Métodos
_____________________
Queremos criar um método que saca uma determinada quantidade e não devolve nenhuma informação para quem acionar esse método.
class Conta {
	double saldo;
	// ... outros atributos ...
	void saca(double quantidade) {
	double novoSaldo = this.saldo - quantidade;
	this.saldo = novoSaldo;
	}
}
*
*
*
Retorno
_____________________
Queremos criar um método que saca uma determinada quantidade e não devolve nenhuma informação para quem acionar esse método.
void saca(double quantidade) {
	double novoSaldo = this.saldo - quantidade;
	this.saldo = novoSaldo;
	}
*
*
*
Argumento
_____________________
Quando alguém pedir para sacar, ele também vai dizer quanto quer sacar. 
Por isso precisamos declarar o método com algo dentro dos parênteses - o que vai aí dentro é chamado de argumento do método (ou parâmetro). 
Essa variável é uma variável comum, chamada também de temporária ou local, pois, ao final da execução desse método, ela deixa de existir.
 void saca(double quantidade) {
*
*
*
Variáveis dentro do método
_____________________
Dentro do método, estamos declarando uma nova variável. 
Essa variável, assim como o argumento, vai morrer no fim do método, pois este é seu escopo. 
No momento que vamos acessar nosso atributo, usamos a palavra chave this para mostrar que esse é um atributo, e não uma simples variável.
 void saca(double quantidade) {
	double novoSaldo = this.saldo - quantidade;
	this.saldo = novoSaldo;
	}
*
*
*
Método para depositar
_____________________
 void deposita(double quantidade) {
 this.saldo += quantidade;
 }
Observe que, agora, não é usada uma variável auxiliar e, além disso, usamos a abreviação += para deixar o método bem simples. 
O += soma quantidade ao valor antigo do saldo e guarda no próprio saldo, o valor resultante.
Para mandar uma mensagem ao objeto e pedir que ele execute um método, também usamos o ponto. 
O termo usado para isso é invocação de método.
*
*
*
Usando a Conta
_____________________
class SacaEDeposita {
 void saca(double quantidade) {
 double novoSaldo = this.saldo - 	quantidade;
 this.saldo = novoSaldo;
 }
 
 void deposita(double quantidade)
 {
 this.saldo += quantidade;
 }
//Continua ao lado 
 / /...
public static void main(String[] args) {
// criando a conta
Conta minhaConta;
minhaConta = new Conta();
// alterando os valores de minhaConta
minhaConta.nome = “João";
minhaConta.saldo = 1000;
// saca 200 reais
minhaConta.saca(200);
// deposita 500 reais
minhaConta.deposita(500);
System.out.println(minhaConta.saldo);
}
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando