Linguagem de Programação III Herança



Documentos relacionados
PHP INTRODUÇÃO CLASSES E OBJETOS

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site:

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS

Programação Orientada a Objetos C++

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

Encapsulamento de Dados

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Análise e Projeto Orientados por Objetos

Programação Orientada a Objetos (DPADF 0063)

PHP: Programando com Orientação a Objetos

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Orientação a Objetos e a Linguagem Java

Herança. Algoritmos e Programação II. Aula 5 Herança

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

ProgramaTchê programatche.net Programação OO com PHP

Programação por Objectos. Java

Capítulo 8. Introdução UML

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Prof. Jhonatan Fernando

Herança. Prof. Andrea Garcia PROW II

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof. Marcelo da Silveira Siedler siedler@gmail.com

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013

3.1 Definições Uma classe é a descrição de um tipo de objeto.

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Herança. Alberto Costa Neto DComp - UFS

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

Desenvolvimento de Aplicações para Internet Aula 7

ORIENTAÇÃO A OBJETOS. Professora Lucélia Oliveira

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Curso Java Starter. 1

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

PROGRAMAÇÃO OO DIAGRAMA DE CLASSES. Engenheiro Anilton S. Fernandes (asfernandes.com) Janeiro 2012

Programação Orientada a Objetos (DPADF 0063)

Tópicos da Aula. Classes e Objetos. Classe Pública em Java. Classes em Java. Assinatura de Métodos. Corpo de Classes e Métodos. Conceitos de classe

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

2 Engenharia de Software

Programação Orientada a Objeto

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p:// h7p://leveme.

Tema 1: Modelo Estático

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Análise e Projeto de Sistemas

Exercícios de Revisão Java Básico

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br

Orientação a Objetos com Java

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Desenvolvimento estruturado versus orientado a objetos.

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Orientação a Objetos. Thiago Messias Evangelista UESC Universidade Estadual de Santa Cruz Version LibreOffice Productivity Suite

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Guia de utilização da notação BPMN

Programação por Objectos. Java

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Análise e Projeto Orientado a Objetos

Análise de Programação

Programação Orientada a Objetos

Python Intermediário. terça-feira, 4 de agosto de 15

Orientação a Objetos

Implementando uma Classe e Criando Objetos a partir dela

Engenharia de Software Engenharia de Requisitos. Análise Orientada a Objetos Prof. Edison A M Morais prof@edison.eti.

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Programação Orientada a Objetos. Encapsulamento

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

Desenvolvimento OO com Java Orientação a objetos básica

Mapa Mental de Data Warehouse - OLAP

Apostila do Curso de PHP Orientado a Objetos

ATRIBUTOS E MÉTODOS DE CLASSE

UML: Diagrama de Casos de Uso, Diagrama de Classes

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Desenvolvimento de Sistemas WEB

TERMOS DE USO. Decathlon.com.br

Engenharia de Software II

UML & Padrões. Aula 1 Apresentação. Profª Kelly Christine C. Silva

Fundamentos de Banco de Dados e Modelagem de Dados

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Curso Java Starter. 1

PHP - Orientação a Objeto MVC. Éderson T. Szlachta {Tecnólogo em Análise e Desenv. de Sistemas} - edersonszlachta@gmail.com

Uma visão mais clara da UML Sumário

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Aula 12: Funções. Pré-requisitos: Todas as aulas anteriores deste módulo. 1. Aproveitando Códigos no Programa

QUESTÕES PROVA 2 (28 a 44)

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

BANCO DE DADOS MODELAGEM ER GENERALIZAÇÃO / ESPECIALIZAÇÃO. Prof.: Jean Carlo Mendes carlomendes@yahoo.com.br

Conceitos de OO AUTOLOAD. <?php function autoload($class_name) { require_once $class_name. '.php'; } $obj = new MyClass1(); $obj2 = new MyClass2();?

Actualizaç ões e novas funcionalidades. Inoxnet. Versã o (c) EBASE Lda.

Modelagem de Dados Usando o Modelo Entidade-Relacionamento

Visual Basic.NET Programação Orientada a Objetos Lista de Exercícios

Programação Orientada a Objetos

RANIERI P. MENESES RELATÓRIO FINAL DE PROJETO MEIOS DE TRANSMISSÃO

Linguagem de Programação III

Técnicas de Normalização por Phaser

PREFEITURA MUNICIPAL DE JARDINÓPOLIS - SÃO PAULO. Departamento de Licitações. Introdução

Padrão Básico de Projeto: Interfaces e Polimorfismo

Transcrição:

Linguagem de Programação III Herança Prof. Moser Fagundes Curso Técnico em Informática (Modalidade Integrada) Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

Vantagens da orientação a objetos A utilização da orientação a objetos e do encapsulamento do código em classes nos permite uma maior organização, mas um dos maiores benefícios que encontramos no paradigma orientado a objetos é o reuso. A possibilidade de reusar partes de código já programadas é o que nos dá agilidade no dia-a-dia, além de eliminar duplicações e reescritas de código.

O conceito de herança Quando falamos em herança, frequentemente pensamos em um tipo de árvore genealógica com avós, pais e filhos, e nas características transmitidas de uma geração para a próxima. Na orientação a objetos, devemos levar a herança como a passagem (compartilhamento) de características (atributos) e comportamentos (métodos) entre classes de uma mesma hierarquia (árvore). As classes inferiores na hierarquia automaticamente herdan todos os atributos e métodos das classes superiores, chamadas superclasses.

Vantagens da herança A herança tem aplicabilidade muito grande, visto que é muito comum termos de adicionar novas funcionalidade nos programas que estamos desenvolvendo: em vez de criarmos uma estrutura totalmente nova (uma nova classe), podemos reaproveitar uma estrutura (classe já existente) que nos forneça uma base provendo propriedades e comportamentos básicos.

Representando herança em UML Conta +agencia +numero +titular +saldo +retirar(quantia) +depositar(quantia) +obtersaldo() ContaCorrente +limite +retirar(quantia) ContaPoupanca +aniversario +retirar(quantia)

Herança no PHP class Conta { $agencia; $numero; $titular; $saldo; function retirar($_quantia) { // Código aqui function depositar($_quantia) { // Código aqui function obtersaldo() { // Código aqui

Herança no PHP class ContaCorrente extends Conta { $limite; function retirar($_quantia) { // Código aqui class ContaPoupanca extends Conta { $aniversario; function retirar($_quantia) { // Código aqui

Overriding (sobrescrita) Overriding ou sobrescrita é uma técnica utilizada para modificar o comportamento (método) de uma class-pai na classe-filha.... Conta +retirar(quantia) +depositar(quantia) +obtersaldo() ContaCorrente +limite +retirar(quantia) ContaPoupanca +aniversario +retirar(quantia)

Exemplo de overriding em PHP class Conta {... function retirar($_quantia) { $this->saldo -= $_quantia; class ContaCorrente extends Conta {... function retirar($_quantia) { if($_quantia >= ($this->saldo + $this->limite)) $this->saldo -= $_quantia; class ContaPoupanca extends Conta {... function retirar($_quantia) { if($_quantia >= $this->saldo) $this->saldo -= $_quantia;

Encapsulamento O encapsulamento, um dos recursos mais importantes da orientação a objetos, provê proteção de acesso aos atributos e métodos internos de um objeto. Visibilidade public protected private Descrição Membros declarados como public poderão ser acessados livremente a partir da própria classe, a partir das classes descendentes e a partir do programa que faz uso da classe. Membros declarados como protected poderão ser acessados a partir da própria classe e das classes descendentes, mas não podem ser acessados do programa que faz uso da classe. Membros declarados como private poderão ser acessados apenas da própria classe. Não podem ser acessados de classes descendentes, nem do programa que usa a classe.

Exemplo de encapsulamento public class Produto { public $codigo; class Livro extends Produto { public $titulo; function imprimir() { echo $this->codigo.'<br>'; echo $this->titulo.'<br>'; $livro0 = new Livro(); $livro0->codigo = 32343; Funciona sem problemas, pois $codigo é público.

Exemplo de encapsulamento protected class Produto { protected $codigo; class Livro extends Produto { protected $titulo; function imprimir() { echo $this->codigo.'<br>'; echo $this->titulo.'<br>'; $livro0 = new Livro(); $livro0->codigo = 32343; Acusa erro apenas fora da classe pois $codigo é protegido. Dentro da classe Produto funciona sem erros.

Exemplo de encapsulamento private class Produto { private $codigo; class Livro extends Produto { private $titulo; function imprimir() { echo $this->codigo.'<br>'; echo $this->titulo.'<br>'; $livro0 = new Livro(); $livro0->codigo = 32343; Acusa erro em ambos locais pois $codigo é privado. Atributos privados só podem ser acessados dentro da classe.

Chamando métodos na classe pai Para chamar métodos com o mesmo nome (overriding) na classe pai, devemos usar o modificador de escopo parent:: class Produto { private $codigo; function imprimir() { echo $this->codigo; class Livro extends Produto { private $titulo; function imprimir() { parent::imprimir(); echo $this->titulo; imprimir() está presente em ambas

Chamando métodos na classe pai class Produto { private $codigo; function construct($_codigo) { $this->codigo = $_codigo; class Livro extends Produto { private $titulo; function construct($_codigo,$_titulo) { parent:: construct($_codigo); $this->titulo = $_titulo; Ambas tem construtor