POO – Programação Orientada a Objetos Ronny Anderson XNA Natal Academic’s ronnytds@gmail.com...

Post on 07-Apr-2016

213 views 0 download

Transcript of POO – Programação Orientada a Objetos Ronny Anderson XNA Natal Academic’s ronnytds@gmail.com...

POO – Programação POO – Programação Orientada a ObjetosOrientada a Objetos

Ronny AndersonRonny AndersonXNA Natal Academic’sXNA Natal Academic’sronnytds@gmail.comronnytds@gmail.com

Tecnologia em Desenvolvimento de Tecnologia em Desenvolvimento de Software CEFET-RNSoftware CEFET-RN

SumárioSumárioIntroduçãoIntroduçãoPOOPOOObjetos Objetos ClassesClassesAbstraçãoAbstraçãoEncapsulamentoEncapsulamentoPolimorfismoPolimorfismoVisibilidadeVisibilidadeTipos de DadosTipos de DadosOperadoresOperadores

IntroduçãoIntroduçãoEsta apresentação tem como objetivo Esta apresentação tem como objetivo mostrar os conceitos da orientação a mostrar os conceitos da orientação a objetos voltados para uma linguagem objetos voltados para uma linguagem de programação(C#) e também de programação(C#) e também familiarizar a sintaxe da linguagem.familiarizar a sintaxe da linguagem.

POOPOO

Se escrever um programa de computador em uma linguagem orientada a objetos, você criará em seu computador um modelo de alguma parte do mundo real. As partes das quais o modelo é construído são os objetos que aparecem no domínio do problema.

Objetos Objetos Um objeto representa algo do mundo real: concreto ou abstrato;A percepção dos seres humanos é dada através dos objetos;Um objeto é uma entidade que exibe algum comportamento bem definido.

ObjetosObjetosUm objeto representa um item identificável, uma unidade, ou entidade, individual com uma regra bem definida.Exemplos:

LivroCarroConta BancáriaReuniãoComputador

ObjetosObjetosObjetos parecidos têm a mesma Objetos parecidos têm a mesma classificação:classificação:

Carro A, cor Verde, Duas Portas.Carro A, cor Verde, Duas Portas.Carro B, cor Amerelo, Quatro Portas.Carro B, cor Amerelo, Quatro Portas.Os dois são carros.Os dois são carros.

O conhecimento a determinado objeto é dado a partir de sua classificação.

ObjetosObjetos

Concretos: Concretos: Camisa, Bola, Controle RemotoCamisa, Bola, Controle Remoto

Abstratos: Abstratos: Música, Filme, Transação BancáriaMúsica, Filme, Transação Bancária

Modelo de Objetos:Modelo de Objetos:OBJETOOBJETO = = DADOSDADOS + + OPERAÇÕESOPERAÇÕES

ObjetosObjetosOs objetos possuem 3 propriedades:Os objetos possuem 3 propriedades:

Estado: Suas Estado: Suas característicascaracterísticas(dados/atributos)(dados/atributos)Comportamento: Suas Comportamento: Suas operaçõesoperações(métodos) (métodos) sobre seus dadossobre seus dadosIdentidade: Seu valor de referênciaIdentidade: Seu valor de referência

Os valores dos Os valores dos dadosdados são modificados são modificados a partir das a partir das operaçõesoperações sobre esses sobre esses dadosdados

ClassesClassesClasses são especificações para objetos;Uma classe serve de modelo para vários objetos semelhantes que possuem os mesmos tipos de informação em seu estado e tem os mesmos comportamentos;

ClassesClassesUma Classe é uma fabrica de objetos idênticos no que diz respeito a sua interface e sua implementação.

AbstraçãoAbstraçãoQuando queremos diminuir a complexidade de alguma coisa, selecionamos parte do que estamos querendo;Não se analisa o “todo”, em POO é importante analisar as partes para entender o todo.

AbstraçãoAbstraçãoExemplo:

Um coelho para sua dona tem os atributos cor e aparência e sob o ponto de vista de um veterinário tem atributos tais como peso e tamanho.

EncapsulamentoEncapsulamento é o processo de esconder todos os detalhes de um objeto que não contribuem para as suas características essenciais;Um objeto em um programa “encapsula” todo o estado e o comportamento;

EncapsulamentoExemplo:

HerançaÉ o mecanismo para expressar a similaridade entre Classes, simplificando a definição de classes iguais que já foram definidas.

PolimorfismoPolimorfismo:

Poli -> Várias Morfos -> Formas

O conceito de polimorfismo está associado a herança. O polimorfismo trabalha com a redeclaração de métodos previamente herdados por uma classe.

PolimorfismoSobrecarga:

A sobrecarga pode mudar tanto a quantidade quanto os tipos dos argumentos; mas não pode mudar o tipo do valor de retorno de um método.public static void setTamanhoRetangulo(int lado){

this.altura = (double) lado;this.largura = lado;

}public static void setTamanhoRetangulo(double alt, int larg){

this.altura = alt;this.largura = larg;

}

PolimorfismoSobrescrita:

Pode-se definir métodos com o mesmo nome, recebendo os mesmos argumentos, porem a sua implementação é realizada de forma diferente. Chamamos isso de sobrescrita.OBS.: Isso acontece para classes diferentes.public static int soma(int a){

return a+a;}public static int soma(int b){

return b+b+b;}

Visibilidade- Private;+ Public;# Protected;~ Default ou Friendly;(não existe em C#) Internal(C#) Protected Internal(C#)

VisibilidadePublic:

O nível de acesso é irrestrito

VisibilidadePrivate:

O nível de acesso se restringe apenas a classe. Não é passado por herança.

VisibilidadeProtected

É visível a toda a classeÉ visível as classes do mesmo namespaceÉ passado por herança(mesmo em namespaces diferentes)

VisibilidadeInternal:

É o nível de acesso que não tem restrição dentro do mesmo assembly. O modificador internal é utilizado com classes internas ao sistema, como helpers a classe, que são auxiliares do sistema e não devem ou não precisam ser expostas.

VisibilidadeProtected Internal:

É uma combinação de dois modificadores: Protected e Internal.Tem nível de acesso semelhante ao internal, com extensão aos tipos derivados, incluídos até mesmo em outro assembly tendo acesso ao membro ou ao tipo.

VisibilidadeOBS:

Se um tipo não for precedido de seu modificador de acesso ele será considerado internal.Se um membro não for precedido de seu modificador de acesso ele será considerado private.

Tipos de DadosToda linguagem de programação oferece um grupo básico de tipo de dados, conhecidos como tipos primitivos ou fundamentais.

Tipos de DadosTipos primitivos do C#

Tipo Framework Class Library (CLR) Descrição

sbyte System.SByte Valor a 8 bits com sinalbyte System.Byte Valor a 8 bits sem sinalshort System.Int16 Valor a 16 bits com sinalushort System.UInt16 Valor a 16 bits sem sinalint System.Int32 Valor a 32 bits com sinaluint System.UInt32 Valor a 32 bits sem sinallong System.Int64 Valor a 64 bits com sinalulong System.UInt64 Valor a 64 bits sem sinalchar System.Char Carácter Unicode a 16 bitsfloat System.Single IEEE 32 bitsdouble System.Double IEEE 64 bitsbool System.Boolean 1 bit (True ou False)decimal System.Decimal float a 128 bits (não é primitivo no CTS)object System.Object Base de todos os tipos string System.String Array de caracteres

Tipos de DadosTipos Valor: São alocados na pilha(Stack).

São usados para tipos primitivos.Tipos Referência: São alocados na Heap(Managed Heap).

São usados quando há necessidade de manipular um objeto.

Tipo Ponteiro: Podem ser utilizados em código inseguro(unsafe code).

Tipos de DadosConversões Implícitas:

Ocorrem em atribuições de variáveis ou passagem de parâmetros a métodosAcontece automaticamente(do menor para o maior).

Conversões Explícitas(Cast): Ocorre quando uma variável pode ser mais de um tipo. Não ocorre automaticamente.Necessário colocar o tipo para o qual vai ser convertido entre parênteses.

Tipos de DadosStruct X ClassStruct(Estrutura):

É tratada como tipo valor.Suporta construtores, constantes, campos, métodos, propriedades, indexadores, operadores e tipos aninhados.Não suporta referências(membros, construtores parametrizados).É um agrupamento de tipos primitivos e/ou compostos.

Tipos de DadosStruct(Exemplo):

struct Tamanho {

int altura;int largura;

}

Tipos de DadosClass(Classe):

É tratada como tipo referência.Suporta construtores, constantes, campos, métodos, propriedades, indexadores, operadores e tipos aninhados.Suporta referências.É uma classificação de objetos.

OperadoresAssim com os tipos de dados, C# oferece um grupo de operadores que nos permitem realizar as mais diversas operações.

OperadoresCategoria Operadores Aritmética +-*/%Lógica (booleana e bitwise) & | ^! ~ && || true falseConcatenação de string +Incremento e decremento ++ --Shift << >>Relacional = = != <> <= >=Atribuição = += -+ *= /= %= &= |= ^= <<= >>=Acesso a membro .Indexação []Cast ( )Condicional ?:Delegate (concatenação e remoção) + -Criação de objeto newInformação de tipo is sizeof typeof Controle de exceção de overflow Checked uncheckedIndireção e endereço * --> [] &

OperadoresÉ interessante ressaltar que existe uma precedência entre os operadores.

Categoria OperadoresPrimário (x) x.y f(x) a[x] x++ x– new typeof sizeof checked

uncheckedUnário + - ! ~++x –x (T)xMultiplicativo * / %Aditivo + -Shift << >>Relacional < > <= >= isComparação == !=Lógico AND &Lógico XOR ^Lógico OR |Condicional AND &&Condicional OR ||Condicional ?:atribuição = *= /= %= += -= <<= >>= &= ^= |=

www.xna.comwww.xna.comwww.nudes.cefetrn.br/xnawww.nudes.cefetrn.br/xna

xna-natal-academics@googlegroups.comxna-natal-academics@googlegroups.com