Post on 01-Jan-2016
description
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ção
POOPOO
Objetos Objetos
ClassesClasses
AbstraçãoAbstração
EncapsulamentoEncapsulamento
PolimorfismoPolimorfismo
VisibilidadeVisibilidade
Tipos de DadosTipos de Dados
OperadoresOperadores
IntroduçãoIntrodução
Esta 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.
ObjetosObjetos
Um objeto representa um item identificável, uma unidade, ou entidade, individual com uma regra bem definida.
Exemplos:LivroCarroConta BancáriaReuniãoComputador
ObjetosObjetos
Objetos 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
ObjetosObjetos
Os 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 dados
Identidade: 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
ClassesClasses
Classes 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ção
Quando 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ção
Exemplo: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.
Encapsulamento
Encapsulamento é 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;
Encapsulamento
Exemplo:
Herança
É o mecanismo para expressar a similaridade entre Classes, simplificando a definição de classes iguais que já foram definidas.
Polimorfismo
Polimorfismo: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.
Polimorfismo
Sobrecarga: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;
}
Polimorfismo
Sobrescrita: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#)
Visibilidade
Public: O nível de acesso é irrestrito
Visibilidade
Private: O nível de acesso se restringe apenas a classe.
Não é passado por herança.
Visibilidade
ProtectedÉ visível a toda a classe
É visível as classes do mesmo namespace
É passado por herança(mesmo em namespaces diferentes)
Visibilidade
Internal:É 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.
Visibilidade
Protected 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.
Visibilidade
OBS: 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 Dados
Toda 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 sinal
byte System.Byte Valor a 8 bits sem sinal
short System.Int16 Valor a 16 bits com sinal
ushort System.UInt16 Valor a 16 bits sem sinal
int System.Int32 Valor a 32 bits com sinal
uint System.UInt32 Valor a 32 bits sem sinal
long System.Int64 Valor a 64 bits com sinal
ulong System.UInt64 Valor a 64 bits sem sinal
char System.Char Carácter Unicode a 16 bits
float System.Single IEEE 32 bits
double System.Double IEEE 64 bits
bool 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 Dados
Tipos 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 Dados
Conversões Implícitas: Ocorrem em atribuições de variáveis ou passagem de parâmetros a métodos
Acontece 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 Dados
Struct X Class
Struct(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 Dados
Struct(Exemplo):
struct Tamanho
{
int altura;
int largura;
}
Tipos de Dados
Class(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.
Operadores
Assim 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 false
Concatenaçã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 new
Informação de tipo is sizeof typeof
Controle de exceção de overflow Checked unchecked
Indireção e endereço * --> [] &
OperadoresÉ interessante ressaltar que existe uma precedência entre os operadores.
Categoria Operadores
Primário (x) x.y f(x) a[x] x++ x– new typeof sizeof checked unchecked
Unário + - ! ~++x –x (T)x
Multiplicativo * / %
Aditivo + -
Shift << >>
Relacional < > <= >= is
Comparaçã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