Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe);...

60
Cap2. Conceitos de orientação a objetos

Transcript of Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe);...

Page 1: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Cap2. Conceitos de orientação a objetos

Page 2: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos (propriedades) e métodos (ações).

1. Introdução á Programação Orientada a Objeto

Page 3: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

É uma referência a um local da memória que possui um valor. Um objeto é uma instância de uma classe.

2.Objeto / instância

Page 4: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

São características (propriedades) de um objeto

3.Atributo 

Page 5: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Exercícios de Fixação

Page 6: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

1. Escreva um modelo para representar uma lâmpada que está à venda em um supermercado. Que dados devem ser representados por este modelo?

Page 7: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

1. Crie um modelo Livro que represente os dados básicos de um livro, sem se preocupar com a sua finalidade.

Page 8: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

São as ações que a Classe poderá realizar. Quando um objeto desta classe receber uma mensagem de algum outro objeto contendo o nome de um método, a ação correspondente a este método será executada.

3.Operações e Métodos

Page 9: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

public class Conta { private Double saldo;

public void setSaldo(Double saldo) { this.saldo = saldo;

}

public Double getSaldo() { return saldo;

}

public void depositar(Double valor){ saldo += valor;

}

public void verificaSaldo(){ System.out.println("Valor do Saldo: "+getSaldo()); }

}

Page 10: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

<? class conta { var $saldo;

function conta () { $this.saldo = 0;

} function saldo() {

return $this->saldo; } function credito($valor) {

$this->saldo += $valor; } }

?>

Page 11: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

public class Pessoa{ int _id; string _nome; DateTime _dataNascimento; public int CalcularIdade() { int idade = DateTime.Now.Year - this._dataNascimento.Year; return (idade); } public int CalcularIdade(DateTime dataReferencia) { int idade = dataReferencia.Year - this._dataNascimento.Year; return (idade); }}

Page 12: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

class ValoresInt { public int calculadora() {

int a = 10; int b = 20;

int c = a + b; return c;

} }

public class Metodo_Com_Retorno_Inteiro { public static void main(String[] args) {

ValoresInt valores = new ValoresInt();

System.out.print(valores.calculadora()

); }

}

Page 13: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

// Declaração do métodoint soma(int x, int y){ return x + y;}

// e para chamar o métodoint a = 2;int b = 3;int resultado = soma(a, b);

Page 14: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Exercícios de Fixação

Page 15: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

1. Escreva uma classe para conter três membros do tipo inteiro chamados hora, minutos e segundos e chame-a de tempo.

Crie um método para solicitar a hora, os minutos e os segundos para o usuário.

Crie um método para imprimir a hora no formato hh:mm:ss.

Page 16: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

É uma chamada a um objeto para invocar um de seus métodos, ativando um comportamento descrito por sua classe.

4.Mensagem   

Page 17: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

public static void main(String[] args) {//INSTANCIA A CLASSE CONTA

nconta = new Conta(); //DEFINE UM VALOR DE SALDO

nconta.setSaldo(633.00); //DEFINE VALOR PARA DEPOSITAR

nconta.depositar(555.0); //RESGATA VALOR

nconta.verificaSaldo(); }

Page 18: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Representa um conjunto de objetos com características comuns.

5.Classe

Page 19: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

class TV {int tamanho;int canal;boolean

ligada;}

Classe em Java

Page 20: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Classe em VB.netClass ClasseSimples2 Private MemberVal1 As Long Protected MemberVal2 As Long Public MemberVal3 As Long End Class

Page 21: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

public class Pessoa{ int _id; string _nome; DateTime _dataNascimento;}

Classe em C#

Page 22: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

class conexao{var $ip = "localhost";var $user = "root";var $pass = "";var $database = "projeto";}

Classe em PHP

Page 23: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Exercícios de Fixação

Page 24: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

1. Em uma determinada Imobiliária precisamos tratar os seguintes dados:

Os Imóveis á serem alugadosOs Proprietários Os locatáriosOs aluguéis a serem pagosCrie uma modelo de dados básico para cada uma

das classes.

Page 25: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

2. Desenvolver um sistema de cadastro de Pessoas, Alunos e Professores.

Sendo que as Alunos terão como que cadastrar as notas equivalentes ao semestre

Page 26: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

É a criação de um objeto a partir de uma classe.

6.Instanciação

Ex:apto1: novo Apartamento()apto1.Editar_Apto()fez a chamada do método Editar_apto() na instância apto1

Linha de criação de uma instânciaNome da instancia: novo Nome da Classe ao qual pertence

Page 27: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

private void button1_Click(object sender, EventArgs e){ //Instanciando um objeto Socio soc = new Socio(); //Inserindo atributos soc.Nome = "Thiago Montebugnoli"; soc.Rg = "41.999.999-9"; soc.Cpf = "312.999.999-99"; soc.Nascimento = DateTime.Parse("15/11/1984"); soc.Telefone = "(14) 9999-9999"; soc.Endereco = "Rua Fulano de Tal, 999"; //Invocando métodos soc.Cadastrar(); if (soc.ConfirmarCadastro(1)) MessageBox.Show("Cadastro Confirmado!"); if (soc.ValidarSocio(1)) MessageBox.Show("Sócio Validado!"); soc.Alterar();}

Page 28: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

4.Herança (ou generalização)    Mecanismo pelo qual uma classe pode estender outra classe aproveitando seus métodos e atributos. 

 

class Pessoa class Fisica : Pessoa class Juridica : Pessoa

Public Class PessoaFisica Inherits Pessoa

class Carro extends Veiculo

Page 29: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

A classe que concede as características a uma outra classe.

Classe Base (Super Classe) (Classe Pai)

Page 30: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

<?class conta {

var $saldo;function saldo() {

return $this->saldo;}function credito($valor) {

$this->saldo += $valor;}

}$minhaconta = new conta;$minhaconta->saldo();// a variavel interna não foi inicializada, e não contém valor algum$minhaconta->credito(50);$minhaconta->saldo(); // retorna 50?>

Page 31: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

A classe que herda as características da classe base.

Classe Derivada (Sub Classe) (Classe Filho)

Page 32: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Determina que uma classe herdará características de apenas uma classe base.

Herança Simples

Page 33: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

<?phpclass ChequeEspecial extends ChequeComum{

public function calculaJuros(){

return $this->valor * 1.10; // soma 10% em cima do valor}

}?>

Page 34: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Determina que uma classe herdará características de duas ou mais classes base.

Herança Múltipla

Page 35: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

 Class B           ' primeira classe filha ou subclasse da classe Pai       Inherits A     ' esta linha indica que esta classe herda da classe A       Public Sub B()           System.Console.Write("B")       End Sub   End Class

Class A   'classe Pai ou classe base.         Public Sub A()            System.Console.Write("A")        End Sub    End Class

Class C 'segunda classe filha Inherits B ' esta linha indica que esta classe herda da classe B Public Sub C() System.Console.Write("C") End Sub End Class

Page 36: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

//Pessoa

namespace Heranca

{

public class Pessoa

{

public string Nome {

get; set;

}

public void escreverNome()

{

Console.Write(this.Nome);

}

}

}

//Pessoa Física

namespace Heranca

{

public class Fisica : Pessoa

{

public string Cpf {

get; set;

}

public Boolean validarCpf() {

return this.Cpf.Length == 11;

}

}

}

//Pessoa Jurídica

namespace Heranca

{

public class Juridica : Pessoa{

public string Cnpj { get; set;

}

public Boolean validarCnpj()

{

return this.Cnpj.Length == 14;

}

}

}

Page 37: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Exercícios de Fixação

Page 38: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Crie a seguinte hierarquia de Classes:

Page 39: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Crie a seguinte hierarquia de Classes:

Page 40: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

5.Classes Abstratas   Uma classe abstrata é desenvolvida para representar

entidades e conceitos abstratos. A classe abstrata é sempre uma superclasse que não possui instâncias. Ela define um modelo (template) para uma funcionalidade 

Page 41: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

- Uma classe abstrata é uma classe que não pode ser instanciada. Você não pode criar um objeto a partir de uma classe abstrata.

- Uma classe abstrata pode ser herdada e geralmente serve como classe base para outras classes.

- Uma classe abstrata pode conter métodos abstratos e métodos comuns. Uma classe abstrata também podem possuir construtores, propriedades, indexadores e eventos.

CARACTERISTICAS DA CLASSE ABSTRATA

Page 42: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

CARACTERISTICAS DOS MÉTODOS ABSTRATOS:

- Um método abstrato é um método que não possui implementação na classe abstrata.

Um método abstrato possui somente a definição de sua assinatura.

A sua implementação deve ser feita na classe derivada.

Page 43: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Muitas formas geométricas possuem área, perímetro e cor, porém cada forma geométrica tem sua fórmula particular para calcular a área e o perímetro

Page 44: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

public abstract class Forma { private double _area; private string _cor; private double _perimetro;

public string Cor { get { return _cor; } set { _cor = value; } }

public double Area { get{

return _area; }

set { _area = value; }

}

public double Perimetro { get{ return _perimetro; } set{ _perimetro = value; } }

Page 45: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Vamos definir a classe Quadrado que vai herdar da classe Forma

public class Quadrado : Forma { private double lado; public double Lado { get {return lado;} set {lado = value;} }

}

public override void CalcularArea() { this.Area = lado * lado; }

public override void CalcularPerimetro() { this.Perimetro = 4 * lado; }

Page 46: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

6.Persistência / Serialização.  É a capacidade de um objeto de salvar seus dados para uso

em outro momento. Este termo é muito utilizado quando falamos de banco de

dados, onde um objeto salva os dados em uma tabela. Imaginamos que no objeto pessoa temos as propriedades,

Nome, Telefone e CPF e precisamos salvar estes dados para que quando o aplicativo for fechado possamos recuperar o mesmo ao abrir o aplicativo novamente.

Page 47: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.
Page 48: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

//popular o objeto pessoaPessoa pessoa = new Pessoa();pessoa.Nome = "Marcelo";pessoa.CPF = "000.000.000-00";pessoa.Telefone = "(00) 0000-0000";

//criar o objeto que irá serializar a pessoa em XMLSystem.Xml.Serialization.XmlSerializer x =new System.Xml.Serialization.XmlSerializer(pessoa.GetType());

//salvar no arquivo XML pessoa.xmlSystem.Xml.XmlTextWriter xmlWriter =new System.Xml.XmlTextWriter("pessoa.xml", Encoding.UTF8);

//serializar para pessoa.xmlx.Serialize(xmlWriter, pessoa);

//liberamos o arquivo xmlxmlWriter.Flush();xmlWriter.Close();

//Neste momento se você abrir o arquivo pessoa.xml//em algum editor//verá os dados do objeto pessoaSystem.Xml.XmlTextReader xmlReader =new System.Xml.XmlTextReader("pessoa.xml");

//recuperar os dados e popular o objeto pessoa.pessoa = (Pessoa)x.Deserialize(xmlReader);

//como teste, iremos passar o nome para uma variável stringstring nomePessoa = pessoa.Nome;

Page 49: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Foca nos aspectos essenciais dos objetos, representando apenas características relevantes ao sistema

Abstrair significa separar mentalmente, considerar isoladamente, simplificar. Assim nossosistema deve ser separado de forma lógica com o objetivo de simplificar.

Sendo assim existem classes que chamamos de classes estruturais. Elas são responsáveis por manter uma estrutura padrão para seus filhos, indepentende do seu número. Ou seja, essas classes nunca serão instanciadas, pois somente seus filhos serão usados

7.Abstração

Page 50: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

É a relação mais comum entre dois objetos. Quando acontece? Quando uma classe “usa”

outra classe. Exemplo: Um motorista utiliza (depende do carro,

mas este não faz parte do motorista) o carro para trabalhar. 

8.Associações

Page 51: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Neste caso, o objeto-pai é responsável pela criação e destruição de suas partes.

O objeto-pai realmente “possui” as instâncias de suas partes. Resumidamente, um só existe caso o outro também exista.

Composição

Page 52: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Neste exemplo, a classe cliente será responsável por instanciar contato.

Page 53: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Na agregação o objeto agrega outro objeto, ou seja, torna um objeto externo parte de si..

Assim o objeto pai poderá utilizar funcionalidades do objeto agregado, mas ele não depende dele (agregado) para existir.

Agregação

Page 54: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Exemplo: O produto esta no carrinho de compras mas nem um dos dois precisa do outro para existir.

Page 55: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Encapsulamento vem de encapsular, que em programação orientada a objetos significa separar o programa em partes, o mais isolado possível.

A ideia é tornar o software mais flexível, fácil de modificar e de criar novas implementações.

O Encapsulamento serve para controlar o acesso aos atributos e métodos de uma classe

9.Encapsulamento

Page 56: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

public class Pessoa{ private String nome; private String sobrenome; private String dataNasc; private String rg; private String[] telefones;

}

Page 57: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Capacidade dos objetos assumirem várias formas

10.Polimorfismo

Page 58: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

<?php

class ChequeComum

{

private $valor;

// ... outros métodos da classe

public function setValor( $valor )

{

$this->valor = $valor;

}

public function getValor()

{

return $this->valor;

}

public function calculaJuros()

{

return $this->valor * 1.25; // soma 25% em cima do valor

}

}

?>

<?phpclass ChequeEspecial extends ChequeComum{ public function calculaJuros()

{return $this->valor * 1.10; }

}?>

Page 59: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Compartilhar métodos e dados de um objeto com outro. (Reaproveitamento de código)

Herança e polimorfismo.

Reaproveitamento de código.

11.Compartilhamento

Page 60: Em programação orientada a objetos, um objeto passa a existir a partir de um "modelo“ (classe); a classe define o comportamento do objeto, usando atributos.

Exercícios Complementares

Pag.90 á 94