POO Programao Orientada a Objetos Ronny Anderson XNA
POO – Programação Orientada a Objetos Ronny Anderson XNA Natal Academic’s ronnytds@gmail. com Tecnologia em Desenvolvimento de Software CEFET-RN
Sumário Introdução POO Objetos Classes Abstração Encapsulamento Polimorfismo Visibilidade Tipos de Dados Operadores
Introdução Esta apresentação tem como objetivo mostrar os conceitos da orientação a objetos voltados para uma linguagem de programação(C#) e também familiarizar a sintaxe da linguagem.
POO 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 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.
Objetos Um objeto representa um item identificável, uma unidade, ou entidade, individual com uma regra bem definida. Exemplos: Livro Carro Conta Bancária Reunião Computador
Objetos parecidos têm a mesma classificação: Carro A, cor Verde, Duas Portas. Carro B, cor Amerelo, Quatro Portas. Os dois são carros. O conhecimento a determinado objeto é dado a partir de sua classificação.
Objetos Concretos: Camisa, Bola, Controle Remoto Abstratos: Música, Filme, Transação Bancária Modelo de Objetos: OBJETO = DADOS + OPERAÇÕES
Objetos Os objetos possuem 3 propriedades: Estado: Suas características(dados/atributos) Comportamento: Suas operações(métodos) sobre seus dados Identidade: Seu valor de referência Os valores dos dados são modificados a partir das operações sobre esses dados
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;
Classes Uma Classe é uma fabrica de objetos idênticos no que diz respeito a sua interface e sua implementação.
Abstraçã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çã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 é 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: 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 set. Tamanho. Retangulo(int lado){ this. altura = (double) lado; this. largura = lado; } public static void set. Tamanho. Retangulo(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 Dados Tipos primitivos do C# sbyte short ushort int uint long ulong char float double bool decimal object string Tipo Framework Class Library (CLR) System. SByte System. Int 16 System. UInt 16 System. Int 32 System. UInt 32 System. Int 64 System. UInt 64 System. Char System. Single System. Double System. Boolean System. Decimal System. Object System. String Descrição Valor a 8 bits com sinal Valor a 8 bits sem sinal Valor a 16 bits com sinal Valor a 16 bits sem sinal Valor a 32 bits com sinal Valor a 32 bits sem sinal Valor a 64 bits com sinal Valor a 64 bits sem sinal Carácter Unicode a 16 bits IEEE 32 bits IEEE 64 bits 1 bit (True ou False) float a 128 bits (não é primitivo no CTS) Base de todos os tipos 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.
Operadores Categoria 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. com www. nudes. cefetrn. br/xna xna-natal-academics@googlegroups. com
- Slides: 37