07a_IntroOO

19
Orientação a Objetos Algoritmos e Programação em C++ UNISINOS Prof. MSc. João Ricardo Bittencourt Update: 16 Set. 2013 [email protected]

description

Csharp pronatec.

Transcript of 07a_IntroOO

  • Orientao a Objetos

    Algoritmos e Programao em C++UNISINOS

    Prof. MSc. Joo Ricardo Bittencourt

    Update: 16 Set. [email protected]

  • UNISINOS - Joo Ricardo Bittencourt

    ConceitoO que paradigma?

    paradigma(gregopardeigma, -atos)s. m.1.Algo que serve de exemplo geral ou de modelo.=padro2.Gram.Conjunto das formas que servem de modelo de derivao ou de flexo.=padro3.Ling.Conjunto dos termos ou elementos que podem ocorrer na mesma posio ou contexto de uma estrutura.

    O que significa isso no contexto de programao? um modelo, um padro ou um estilo de programao

    que tem determinadas caractersticas. Uma forma de ver e de resolver os problemas.

  • UNISINOS - Joo Ricardo Bittencourt

    TiposProgramao ImperativaFortran, Pascal, C, Basic

    Programao Orientada a ObjetosSmalltalk, C++, Java

    Programao Funcional ou DescritivaLISP, ML, Haskell, F#

    Programao em LgicaPROLOG, Popler

    E muuuuitas outras..

    ;;; Common Lisp(defun helloworld () (print "Ol mundo!"))

    % Prologhello :- display('Ol mundo!') , nl .

    // Javaclass HelloWorld { static public void main( String args[] ) { System.out.println( "Ol mundo!" ); }}

  • UNISINOS - Joo Ricardo Bittencourt

    Programao ImperativaProgramas centrados no conceito de um estado (modelado por variveis) e aes (comandos) que manipulam o estado.Paradigma tambm denominado de procedural.Procedimentos e funesPrimeiro paradigma a surgir e ainda o dominante.

  • UNISINOS - Joo Ricardo Bittencourt

    Prog. Orientao a Objetos

    Plants vs. ZombiesDiferentes tipos de zumbisAparnciaHabilidades NadarAtravessar muralhasForaNmero de tiros que precisam levar para morrer

  • UNISINOS - Joo Ricardo Bittencourt

    Prog. Orientao a ObjetosOutros exemplos?!

  • UNISINOS - Joo Ricardo Bittencourt

    Prog. Orientao a ObjetosO que todas as cadeiras tem em comum?Todas servem para sentar... :-P

    Como saber que um objeto uma cadeira?Caractersticas (atributos)Funcionalidade(s) (mtodos) Todos os objetos mostrados na imagem anterior so da classe Cadeira.

  • UNISINOS - Joo Ricardo Bittencourt

    Prog. Orientao a ObjetosFicamos ento com duas ideias: classe e objeto.O que uma classe? uma categoria, uma descrio de algum objeto...Representam (modelam) uma entidade que pode ser do mundo real ou uma abstrao de um conceito.

    O que um objeto?Instncia de uma classe a materializao de um conceito formalizado uma varivel existente na memria do computador

  • UNISINOS - Joo Ricardo Bittencourt

    Prog. Orientao a ObjetosA programao Orientada a Objetos define a ideia de Encapsulamento.Significa que um objeto deve conter toda a informao que ele precisa.

    Um objeto deve conter todo o comportamento necessrio para sua execuo dentro de si e no separado por classes no relacionadas.

    Para usar um celular no necessrio saber ele funciona por dentro, mas sim as funcionalidades dele.

  • UNISINOS - Joo Ricardo Bittencourt

    Como representar uma classe?

    Atravs de atributos e de mtodos.

    Atributos: representam os dados e seus valores definem o estado do objeto.

    Mtodos: so as aes que o objeto capaz de realizar. Podem agir sobre seus prprios atributos ou permitir a interao (envio de mensagem) a outros objetos.

  • UNISINOS - Joo Ricardo Bittencourt

    Como representar uma classe?

    Uma classe composta de duas partes: a interface e a implementao.

    A interface contm a declarao dos atributos e dos mtodos de uma classe, bem como a sua visibilidade.

    A implementao contm o cdigo (comandos) dos mtodos.

  • UNISINOS - Joo Ricardo Bittencourt

    Prog. Orientao a ObjetosOcultamentoOcultamento uma das tarefas do encapsulamento.

    Um objeto deve esconder (proteger) seus dados de acesso externo direto. Assim possvel evitar que os atributos sejam corrompidos.

    A funcionalidade do objeto est ocultada na definio.

  • UNISINOS - Joo Ricardo Bittencourt

    Prog. Orientao a ObjetosVisibilidade

    A visibilidade est relacionada ao Encapsulamento.

    Em C++ existem trs nveis de visibilidade:publicprotectedprivate

  • UNISINOS - Joo Ricardo Bittencourt

    Prog. Orientao a ObjetosVisibilidade Pblica - publicTudo o que est declarado dentro da seo pblica de uma classe visvel e acessvel externamente a classe.Ou seja, a seo pblica define a Interface da classe que acessvel por outros objetos.No boa prtica de programao declarar atributos na seo pblica.

  • UNISINOS - Joo Ricardo Bittencourt

    Prog. Orientao a ObjetosVisibilidade Oculta - protected e privateNeste momento no interessa muito a diferena entre protected e private.

    Basta saber que, nestes casos, os mtodos e atributos s podem ser acessados pela prpria classe.

  • UNISINOS - Joo Ricardo Bittencourt

    Interfaceclass Mago {

    public: Mago(); ~Mago(); void andar(); void falar(); void invocarMagia();

    protected: string nome, escolaDeMagia; int poder, idade;

    };

    //Arquivo mago.h

  • UNISINOS - Joo Ricardo Bittencourt

    Interfaceclass Mago {

    public: Mago(); ~Mago(); void andar(); void falar(); void invocarMagia();

    protected: string nome, escolaDeMagia; int poder, idade;

    };

    //Arquivo mago.h

    Mtodos

    //Podem existir atributos pblicos, mas isso fere o princpio da OO.

    Atributos

    //Mtodos podem ser ocultos (protected ou private) sem problema algum.

  • UNISINOS - Joo Ricardo Bittencourt

    Construtores e DestrutoresMtodo ConstrutorNomeDaClasse();Construtor Padro (obrigatoriamente um)Qual o propsito do construtor?Alocar memria para o objeto

    Mtodo Destrutor~NomeDaClasse(); (somente um destrutor)Qual o propsito do mtodo destrutor?Liberar memria quando no utiliza mais o objeto

  • UNISINOS - Joo Ricardo Bittencourt

    ExerccioPense em trs classes diferentes de objetos. Descreva a interface, com os atributos e os mtodos relativos a essas classes.Sugestes: trabalho do grau A, algum jogo que vocs est jogando, uma soluo para hackathon,...

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19