mc322 aula1 introducao poo

31
MC322 2014 [email protected] Objetos POO Classes Herança Referências Introdução à Programação Orientada a Objetos prof. Fábio Luiz Usberti MC322 - Programação Orientada a Objetos Instituto de Computação - UNICAMP - 2014

Upload: mgzaniolo

Post on 17-Nov-2015

25 views

Category:

Documents


4 download

DESCRIPTION

Introdução a orientação de objetos no java

TRANSCRIPT

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Introduo ProgramaoOrientada a Objetos

    prof. Fbio Luiz Usberti

    MC322 - Programao Orientada a ObjetosInstituto de Computao - UNICAMP - 2014

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Sumrio

    1 Objetos

    2 POO

    3 Classes

    4 Herana

    5 Referncias

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    O que so objetos?

    Objetos do mundo real: lousa, apagador, mesa,professor, aluno, co, bicicleta, carro.

    Duas caractersticas essenciais de objetos domundo real: estado e comportamento.

    Identificar o estado e comportamento dos objetos a melhor maneira para comear a pensar emtermos de programao orientada a objetos.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Objetos do mundo real

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Objetos do mundo real

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Objetos do mundo real

    Objetos diferentes possuem complexidadesdiferentes.

    Lanterna: Estados: ligado e desligado. Comportamentos: ligar e desligar.

    Rdio: Estados: ligado, desligado, volume atual, estao

    atual. Comportamentos: ligar, desligar, aumentar volume,

    diminuir volume, procurar estao, sintonizar.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Objetos de software

    Objetos em software tambm possuem estados ecomportamentos.

    Um objeto armazena seu estado em atributos(variveis) e assumem comportamentos atravs demtodos (funes).

    Os mtodos de um objeto operam sobre seuestado interno e so os principais mecanismos daintercomunicao objeto-objeto.

    A possibilidade de esconder o estado interno deum objeto e obrigar que todas as interaes comum objeto sejam realizadas por mtodos conhecido como encapsulamento.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Objetos de software

    Fonte: http://docs.oracle.com/javase/tutorial/java/concepts/object.html

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    POO Programao Orientada a Objetos

    Desenvolver um programa computacionalconstitudo por um conjunto de objetos

    relacionados que interagem de forma a resolverum problema.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    POO Programao Orientada a Objetos

    Etapas fundamentais do design orientado aobjetos de um software:

    Analisar os requisitos que descrevem o sistemadesejado.

    Determinar os objetos necessrios paraimplementar o sistema.

    Determinar os atributos que os objetos tero. Determinar os comportamentos que esses objetos

    exibiro. Especificar como ocorre a interao entre os

    objetos para atender aos requisitos do sistema.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    POO Programao Orientada a Objetos

    Benefcios da programao orientada a objetos: Abstrao Modularidade Encapsulamento Reuso de cdigo Alterao e depurao

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Abstrao

    O conceito de abstrao ou modelagem significadecompor um sistema complicado em suas partesfundamentais, descrevendo-as em uma linguagemsimples e precisa.

    Os componentes do sistema e suasfuncionalidades so identificadas e descritas.

    Essa descrio passa a ser uma abstrao ou ummodelo do sistema, que pode ser implementadocomo um objeto em uma linguagem orientada aobjetos.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Modularidade

    Sistemas modernos de software so constitudospor diversos componentes (objetos) distintos queinteragem entre si.

    A modularidade prev que o cdigo-fonte de umobjeto pode ser escrito e mantido de modoindependente de outros objetos.

    Essa independncia deve estar associada a umaestrutura de organizao dos diferentes objetos,para que eles possam interagir corretamente,fazendo com que todo sistema funcione de formaadequada.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Encapsulamento

    A interao de um objeto com o meio externo realizada exclusivamente atravs de seusmtodos.

    Os detalhes de implementao so mantidosescondidos do meio externo.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Reuso de cdigo

    Frequentemente precisamos de objetos jimplementados em outras situaes e por outrosdesenvolvedores.

    Esses objetos podem ser incorporados em umnovo programa.

    Objetos complexos e de propsito especficopodem ser implementados e testadosexaustivamente antes de serem incorporados aoprograma computacional.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Alterao e depurao

    Se um objeto tornar-se problemtico, possvelsimplesmente fazer a remoo e substituio poroutro objeto que esteja funcional.

    se uma mquina possui uma engrenagemdefeituosa, no troque a mquina, mas somente aengrenagem.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    O que so classes?

    No mundo real, possvel encontrar diversosexemplares de objetos de um mesmo tipo.

    Existem muitas unidades de bicicleta de ummesmo tipo, dotadas dos mesmos componentes efeitas a partir de um mesmo desenho (modelo).

    Em termos de orientao a objetos, dizemos queum objeto bibicleta uma instncia de uma classeque modela bicicletas.

    Uma classe uma receita atravs da qual objetosso criados.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    O que so classes?

    A modelagem de classes pode ser auxiliada pormeio de diagramas de classes da linguagem UML.

    A UML uma linguagem de representao grficapara a modelagem de sistemas orientados aobjetos.

    Essa linguagem rica em recursos e possuidiversos diagramas para a descrio estrutural,comportamental e de interaes.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Diagrama UML para a classe Bicicleta

    Software Umbrello para elaborao de diagramas UML (Unified Modelling Language):

    http://umbrello.kde.org/

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos/ Def in io de uma classe B i c i c l e t a /public class Bicyc le {

    / / A t r i b u t o s ( estado ) de uma b i c i c l e t aprotected i n t cadence = 0; / / unidade : rpmprotected i n t speed = 0; / / unidade : km/ hprotected i n t gear = 1 ;

    / / Mtodos ( comportamentos ) de uma b i c i c l e t apublic void changeCadence ( i n t newValue ) {

    cadence = newValue ;}

    public void changeGear ( i n t newValue ) {gear = newValue ;

    }

    public void speedUp ( i n t increment ) {speed = speed + increment ;

    }

    public void applyBrakes ( i n t decrement ) {speed = speed - decrement ;

    }

    public void p r i n t S t a t e ( ) {System . out . p r i n t l n ( " cadence : " +

    cadence + " speed : " +speed + " gear : " + gear ) ;

    }

    }

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Classes em Java

    Ainda sem conhecer a sintaxe de Java, possvelperceber que a classe Bicycle segue o mesmomodelo descrito para bicicletas.

    Os atributos cadence, speed e gear representam oestado do objeto.

    Os mtodos changeCadence(), changeGear(),speedUp() etc. definem o modo como o objetointerage com o meio externo.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Classes em Java

    A classe Bicycle consiste somente em uma receitapara a criao de objetos do tipo Bicicleta.

    A classe BicycleDemo a seguir mostra ainstanciao de dois objetos da classe Bicycle e amanipulao de atributos pela chamada de seusmtodos.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    / Ins tanc iando ob je tos da classe B i c i c l e t a /class BicycleDemo {

    public s t a t i c void main ( S t r i n g [ ] args ) {

    / / Criando dois ob je tos B i c i c l e t aB icyc le bike1 = new Bicyc le ( ) ;B i cyc le bike2 = new Bicyc le ( ) ;

    / / Chamando mtodos dos ob je tos ins tanc iadosbike1 . changeCadence (50) ;b ike1 . speedUp (10) ;b ike1 . changeGear ( 2 ) ;b ike1 . p r i n t S t a t e s ( ) ;

    b ike2 . changeCadence (50) ;b ike2 . speedUp (10) ;b ike2 . changeGear ( 2 ) ;b ike2 . changeCadence (40) ;b ike2 . speedUp (10) ;b ike2 . changeGear ( 3 ) ;b ike2 . p r i n t S t a t e s ( ) ;

    }}

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    / / Sada da execuo da classe BicycleDemocadence :50 speed :10 gear :2cadence :40 speed :20 gear :3

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    O que herana entre objetos?

    Objetos de tipos diferentes muitas vezes possuempropriedades em comum.

    Exemplos: mountain bikes, bicicletas eltricas ebicicletas tandem.

    Esses objetos tm em comum atributos como:velocidade, cadncia e marcha atual.

    No entanto, esses objetos tambm possuematributos que os especializam.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Exemplo de associao entre objetos

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Herana

    A programao orientada a objetos permite que asclasses herdem estados e comportamentos deoutras classes.

    Exemplo: Bicicleta pode ser modelada como umasuperclasse das (sub)classes mountain bike,bicicleta eltrica e bicicleta tandem.

    Particularmente em Java, uma classe pode ter umanica superclasse (imediata) e cada superclassepode ter um nmero indefinido de subclasses.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Diagrama UML para a classe Bicicleta e suassubclasses

    Software Umbrello para elaborao de diagramas UML (Unified Modelling Language):

    http://umbrello.kde.org/

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Herana

    O cdigo a seguir exemplifica a sintaxe dedeclarao de uma subclasse.

    / Exemplo de declarao da subclasse E l e c t r i c B i c y c l e /class E l e c t r i c B i c y c l e extends Bicyc le {

    private boolean motorState ;

    public void turnOnMotor ( ) {motorState = true ;

    }

    public void tu rnOf fMotor ( ) {motorState = fa lse ;

    }}

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Orientao a Objetos

    Herana

    A subclasse BicicletaEletrica possui os atributose mtodos da superclasse Bicicleta, mas ocdigo centraliza exclusivamente naimplementao das caractersticas da subclasse.

    Isso torna o cdigo da subclasse mais fcil deentender.

    A documentao do estado e comportamento dasuperclasse deve ser cuidadosa pois os atributos emtodos da superclasse no aparecem nocdigo-fonte das subclasses.

  • MC322 2014

    [email protected]

    Objetos

    POO

    Classes

    Herana

    Referncias

    Referncias

    1 Java: Como Programar, Paul Deitel & Heivey Deitel; Pearson; 7a. Ed.(no. chamada IMECC 05.133 D368j)

    2 Data Structures and Algorithms with Object Oriented Design Patternsin Java, Bruno Preiss;(http://www.brpreiss.com/books/opus6/)

    3 The Java Tutorials (Oracle)(http://docs.oracle.com/javase/tutorial/)

    4 Guia do Usurio UML, Grady Booch et. al.; Campus(1999)

    5 Java Pocket Guide - Robert Liguori & Patricia Liguori; OReilley, 2008.

    ObjetosPOOClassesHeranaReferncias