SlideShare uma empresa Scribd logo
Programação Orientada a Objeto
POO
FRANK COELHO
ENGENHEIRO DE SOFTWARE
ESPECIALISTA NA PLATAFORMA .NET
Programação orientada a objeto (C# e Visual Basic)
Todas as linguagens gerenciadas no .NET Framework, como por exemplo Visual Basic e C# oferecem
suporte completo para programação orientada a objeto, incluindo encapsulamento, herança e
polimorfismo.
Encapsulamento significa que um grupo de propriedades, métodos e outros membros relacionados
são tratados como uma unidade ou um objeto único.
Herança descreve a habilidade de se criarem novas classes baseadas em uma classe existente.
Polimorfismo significa que você pode ter múltiplas classes que podem ser usadas
intercambiavelmente, mesmo que cada classe implemente as mesmas propriedades e métodos de
modos diferentes.
Classes e Objetos
Os termos classe e objeto são às vezes usados representando a mesma coisa, mas na verdade,
classes descrevem o tipo de objetos, enquanto objetos são instâncias úteis de classes. Dessa forma,
o ato de criar um objeto é chamado de instanciação. Usando a analogia da planta, a classe é a
planta, e o objeto é a construção feita daquela planta.
class SampleClass { }
Definindo uma classe:
O Visual Basic e o C# também fornecem uma versão light de classes chamadas estruturas que são
úteis quando você precisa criar uma grande matriz de objetos e não deseja consumir muita
memória para isso.
Definindo uma estrutura:
struct SampleStruct { }
Membros de Classe
Cada classe pode ter membros de classe diferentes que incluem propriedades que descrevem dados de
classe, métodos que definem o comportamento da classe e eventos que fornecem comunicação entre
classes e objetos diferentes.
Propriedades e campos
Campos e propriedades representam informações que um objeto contém. Campos são como
variáveis, porque eles podem ser lidos ou definidos diretamente.
Para definir um campo:
Class SampleClass
{
public string sampleField;
}
As propriedades têm procedimentos get e set, o que oferece mais controle sobre como os valores são
definidos e retornados.
C# e Visual Basic permitem que você crie um campo particular para armazenar o valor da propriedade ou
use as propriedades auto implementadas para chamadas que criam este campo automaticamente em
segundo plano e fornecem lógica básica para os procedimentos de propriedade.
Para definir uma propriedade implementada automaticamente:
class SampleClass
{
public int SampleProperty
{
get;
set;
}
}
Se você precisar realizar algumas operações adicionais para leitura e gravação do valor da propriedade,
defina um campo para armazenar o valor da propriedade e forneça a lógica básica para armazenar e
recuperá-lo:
class SampleClass
{
private int _sample;
public int Sample
{
// Return the value stored in a field.
get { return _sample; }
// Store the value in the field.
set { _sample = value; }
}
}
A maioria das propriedades possuem métodos ou procedimentos para definir e obter o valor da
propriedade. No entanto, você pode criar propriedades somente leitura ou somente gravação para impedir
que elas sejam modificadas ou lidas. No Visual Basic você pode usar as palavras-
chave ReadOnly e WriteOnly . Em C#, é possível omitir o método de propriedade get ou set . No entanto,
no Visual Basic e no C#, as propriedades implementadas automaticamente não podem ser somente leitura
ou somente gravação.
Métodos
Método é uma ação que um objeto pode executar.
Para definir um método de uma classe:
class SampleClass
{
public int sampleMethod(string sampleParam)
{
// Insert code here
}
}
Uma classe pode ter várias implementações ou sobrecargas do mesmo método que diferem
no número de parâmetros ou tipos de parâmetro.
public int sampleMethod(string sampleParam) {};
public int sampleMethod(int sampleParam) {}
Na maioria dos casos, você declara um método em uma definição de classe. No entanto, o Visual Basic
e o C# também suportam os métodos de extensão que permitem que você adicione métodos a uma
classe existente fora da definição real da classe.
Construtores
Construtores são os métodos da classe que são executados automaticamente quando um objeto de
um determinado tipo é criado. Os construtores geralmente inicializam os membros de dados do novo
objeto. Um construtor pode executar apenas uma vez quando uma classe é criada. Além disso, o
código no construtor é sempre executado antes de qualquer outro código em uma classe. No
entanto, você pode criar várias sobrecargas de construtor da mesma maneira que cria para qualquer
outro método.
Para definir um construtor para uma classe:
public class SampleClass
{
public SampleClass()
{
// Add code here
}
}
Destruidores
Os destruidores são usados para destruir instâncias de classes. No .NET Framework, o coletor de lixo
gerencia automaticamente a alocação e a liberação de memória para os objetos gerenciados em seu
aplicativo. No entanto, você ainda pode precisar de destruidores para limpar os recursos não
gerenciados que seu aplicativo criar. Pode haver apenas um destrutor para uma classe.
Eventos
Os eventos permitem que uma classe ou um objeto notifiquem outros objetos ou classes quando algo
interessante ocorre. A classe que envia (ou gera) o evento é chamada de editor e as classes que
recebem (ou manipula) o evento são chamadas de assinantes. Para obter mais informações sobre
eventos, como são gerados e manipulados.
C#
• Para declarar um evento em uma classe, use a palavra-chave event (Referência de C#).
• Para disparar um evento, chame o representante de evento.
• Para assinar um evento, use o operador +=; para cancelar de um evento, use o operador -=.
Classes Aninhadas
Uma classe definida dentro de outra classe é chamada aninhada. Por padrão, a classe aninhada é
privada.
class Container
{
class Nested
{
// Add code here.
}
}
Para criar uma instância da classe aninhada, use o nome da classe contêiner seguido pelo ponto e
seguida pelo nome da classe aninhada:
Container.Nested nestedInstance = new Container.Nested()
Modificadores de acesso e níveis de acesso
Todas as classes e membros de classe podem especificar o nível de acesso que eles fornecem a outras
classes usando modificadores de acesso.
Os modificadores de acesso a seguir estão disponíveis:
Modificador do Visual Basic Modificador C# Definição
Público (Visual Basic) public O tipo ou membro pode ser acessado por qualquer outro código no mesmo assembly ou em outro assembly que faça
referência a ele.
Particular (Visual Basic) private O tipo ou membro só pode ser acessado por código na mesma classe.
Protegido (Visual Basic) protected O tipo ou membro só pode ser acessado por código na mesma classe ou em uma classe derivada.
Friend (Visual Basic) internal O tipo ou membro pode ser acessado por qualquer código no mesmo assembly, mas não de outro assembly.
Protected Friend protected internal O tipo ou membro pode ser acessado por qualquer código no mesmo assembly ou por qualquer classe derivada em outro
assembly.
Instanciar Classes
Para criar um objeto, você precisa instanciar uma classe ou criar uma instância de uma classe.
Depois de instanciar uma classe, você pode atribuir valores para as propriedades e os campos de
instância e chamar métodos da classe.
SampleClass sampleObject = new SampleClass();
// Set a property value.
sampleObject.sampleProperty = "Sample String";
// Call a method.
sampleObject.sampleMethod();
Para atribuir valores a propriedades durante o processo de instanciação de classe, usa inicializadores de
objeto:
// Set a property value.
SampleClass sampleObject = new SampleClass
{ FirstProperty = "A", SecondProperty = "B" };
Classes e membros estáticos (compartilhados)
Um membro estático (compartilhado no Visual Basic) da classe é uma propriedade, um procedimento ou
um campo compartilhado por todas as instâncias de uma classe.
Para definir um membro estático (compartilhado):
static class SampleClass
{
public static string SampleString = "Sample String";
}
Para acessar o membro estático (compartilhado), use o nome da classe sem criar um objeto dessa classe:
Console.WriteLine(SampleClass.SampleString);
As classes estáticas (compartilhadas) no C# e os módulos no Visual Basic só têm membros estáticos
(compartilhados) e não podem ser instanciados. Os membros estáticos (compartilhados) também não
podem acessar propriedades, campos ou métodos não estáticos (não compartilhados)
Tipos anônimos
Tipos anônimos permitem que você crie objetos sem escrever uma definição de classe para o tipo de
dados. Em vez disso, o compilador gera uma classe para você. A classe não tem nenhum nome utilizável
e contém as propriedades que você que você especificar na declaração do objeto.
Para criar uma instância de um tipo anônimo:
// sampleObject is an instance of a simple anonymous type.
var sampleObject = new { FirstProperty = "A", SecondProperty = "B" };
Herança
A herança permite que você crie uma nova classe que reutiliza, estende e altera o comportamento que
é definido em outra classe. As classe cujos membros são herdados é chamada de classe base, e a classe
que herda a esses membros é chamado de classe a derivada. No entanto, todas as classes no C# e no
Visual Basic são implicitamente herdadas da classe Object que oferece suporte à hierarquia de classe
.NET e fornece serviços de baixo nível a todas as classes.
Observação
Idiomas gerenciados no .NET Framework não oferecem suporte a várias heranças, ou seja, você
pode especificar somente uma classe base para uma classe derivada.
Herdando de uma classe base:
class DerivedClass:BaseClass{}
Por padrão, todas as classes podem ser herdadas. No entanto, você pode especificar se uma classe não
deve ser usada como uma classe base ou criar uma classe que pode ser usada somente como uma
classe base.
Para especificar que uma classe não pode ser usada como classe base:
public sealed class A { }
Para especificar que uma classe pode ser usada apenas como uma classe base e não pode ser
instanciada:
public abstract class B { }
Substituindo membros
Por padrão, uma classe derivada herda todos os membros da classe base. Se quiser alterar o
comportamento do membro herdado, você precisará substituí-lo. Ou seja, você pode definir uma nova
implementação do método, propriedade ou evento na classe derivada.
Os modificadores a seguir são usados para controlar como as propriedades e métodos são
substituídos:
Modificador do Visual Basic Modificador C# Definição
Substituível (Visual Basic) virtual (Referência de C#) Permite que um membro da classe seja substituído em uma
classe derivada.
Substituições (Visual Basic) override (Referência de C#) Substitui um membro virtual (substituível) definido na classe
base.
NotOverridable (Visual Basic) Sem suporte Impede que um membro seja substituído em uma classe
herdeira.
MustOverride (Visual Basic) abstract (Referência de C#) Exige que um membro da classe seja substituído na classe
derivada.
Sombras (Visual Basic) Modificador new (Referência de C#) Oculta um membro herdado de uma classe base
Interfaces
Interfaces, como classes, definem um conjunto de propriedades, métodos e eventos. Mas, ao contrário
das classes, as interfaces não fornecem implementação. São implementados por classes e definidos
como entidades separadas de classes. Uma interface representa um contrato, em que uma classe que
implementa uma interface deve implementar cada aparência da interface exatamente como é definida.
Definindo uma interface:
interface ISampleInterface
{
void doSomething();
}
Para implementar uma interface em uma classe:
class SampleClass : ISampleInterface
{
void ISampleInterface.doSomething()
{
// Method implementation.
}
}
Genéricos
Classes, estruturas, interfaces e métodos no .NET Framework podem incluir parâmetros de tipo que
definem tipos de objetos que podem armazenar ou usar. O exemplo mais comum de genéricos é uma
coleção, onde você pode especificar o tipo de objetos a serem armazenados em uma coleção.
Definindo uma classe genérica:
Public class SampleGeneric<T>
{
public T Field;
}
Para criar uma instância de uma classe genérica:
SampleGeneric<string> sampleObject = new SampleGeneric<string>();
sampleObject.Field = "Sample string";
Delegados
Um delegate é um tipo que define uma assinatura de método e pode fornecer uma referência a
qualquer método com uma assinatura compatível. É possível chamar o método através do
delegate. Representantes são usados para passar métodos como argumentos para outros métodos.
Observação
Os manipuladores de eventos nada mais são do que métodos chamados por meio dos representantes. Para obter
mais informações sobre o uso de delegados na manipulação de eventos, consulte Manipulando e acionando
eventos.
Para criar um delegate:
public delegate void SampleDelegate(string str);
Para criar uma referência a um método que corresponda à assinatura especificado pelo delegate:
class SampleClass
{
// Method that matches the SampleDelegate signature.
public static void sampleMethod(string message)
{
// Add code here.
}
// Method that instantiates the delegate.
void SampleDelegate()
{
SampleDelegate sd = sampleMethod;
sd("Sample string");
}
}
MVA
Microsoft Virtual Academy
http://msdn.microsoft.com/pt-BR/library/vstudio/dd460654
Perguntas?
Acredite você é capaz...
Obrigado...

Mais conteúdo relacionado

Mais procurados

Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
Marconi Rodrigues
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
Breno Vitorino
 
Poo
PooPoo
Java7
Java7Java7
Construtores em Java
Construtores em JavaConstrutores em Java
Construtores em Java
Ederson Lima
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
Natanael Fonseca
 
Java6
Java6Java6
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
Arthur Emanuel
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
Maurício Linhares
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
Cristiano Almeida
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
Natanael Fonseca
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
José Cléber dos Santos Ferreira
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
Daniel Brandão
 
Java - Boas práticas
Java - Boas práticasJava - Boas práticas
Java - Boas práticas
Felippe Rodrigo Puhle
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Moises Omena
 
Java 02
Java 02Java 02
Java 02
samuelthiago
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
Charles Jungbeck
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acesso
Arthur Emanuel
 
Aula05
Aula05Aula05
Reflections
ReflectionsReflections
Reflections
Rafael Uchôa
 

Mais procurados (20)

Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
 
Poo
PooPoo
Poo
 
Java7
Java7Java7
Java7
 
Construtores em Java
Construtores em JavaConstrutores em Java
Construtores em Java
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Java6
Java6Java6
Java6
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Java - Boas práticas
Java - Boas práticasJava - Boas práticas
Java - Boas práticas
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
 
Java 02
Java 02Java 02
Java 02
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acesso
 
Aula05
Aula05Aula05
Aula05
 
Reflections
ReflectionsReflections
Reflections
 

Destaque

Exercícios eletricidade ii_circuitos_rc_séries_e_rc_paralelo_resolução
Exercícios eletricidade ii_circuitos_rc_séries_e_rc_paralelo_resoluçãoExercícios eletricidade ii_circuitos_rc_séries_e_rc_paralelo_resolução
Exercícios eletricidade ii_circuitos_rc_séries_e_rc_paralelo_resolução
Rodrigo Amorim
 
Java Básico - Módulo 07: Introdução à programação orientada à objetos
Java Básico - Módulo 07: Introdução à programação orientada à objetos Java Básico - Módulo 07: Introdução à programação orientada à objetos
Java Básico - Módulo 07: Introdução à programação orientada à objetos
Professor Samuel Ribeiro
 
Análise para licenciatura g,ávila completo.pdf
Análise para  licenciatura g,ávila completo.pdfAnálise para  licenciatura g,ávila completo.pdf
Análise para licenciatura g,ávila completo.pdf
Antonio Batista Mota
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
Regis Magalhães
 
Aplicação do Teorema de Thévenin em circuitos com malhas
Aplicação do Teorema de Thévenin em circuitos com malhasAplicação do Teorema de Thévenin em circuitos com malhas
Aplicação do Teorema de Thévenin em circuitos com malhas
Adilson Nakamura
 
Pitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - ConceitosPitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Charles Fortes
 
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Charles Fortes
 
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão FinalPitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Charles Fortes
 
Análise de circuitos edminister
Análise de circuitos edministerAnálise de circuitos edminister
Análise de circuitos edminister
ricard0606
 
Teoremas exer resolvido
Teoremas exer resolvidoTeoremas exer resolvido
Teoremas exer resolvido
Gabriel Sousa
 
Circuitos elétricos joseph a. edminister - coleção schaum
Circuitos elétricos   joseph a. edminister - coleção schaumCircuitos elétricos   joseph a. edminister - coleção schaum
Circuitos elétricos joseph a. edminister - coleção schaum
Reginaldo Dantas
 
Circuitos eletricos 1 - Circuitos Elétricos em Corrente Contínua
Circuitos eletricos 1 - Circuitos Elétricos em Corrente ContínuaCircuitos eletricos 1 - Circuitos Elétricos em Corrente Contínua
Circuitos eletricos 1 - Circuitos Elétricos em Corrente Contínua
José Albuquerque
 
47781762 curso-de-circuitos-electricos
47781762 curso-de-circuitos-electricos47781762 curso-de-circuitos-electricos
47781762 curso-de-circuitos-electricos
Hugo Hernan Carhuallanqui Aliaga
 
Circuitos electricos schaum
Circuitos electricos   schaumCircuitos electricos   schaum
Circuitos electricos schaum
NeymarLeonel
 

Destaque (14)

Exercícios eletricidade ii_circuitos_rc_séries_e_rc_paralelo_resolução
Exercícios eletricidade ii_circuitos_rc_séries_e_rc_paralelo_resoluçãoExercícios eletricidade ii_circuitos_rc_séries_e_rc_paralelo_resolução
Exercícios eletricidade ii_circuitos_rc_séries_e_rc_paralelo_resolução
 
Java Básico - Módulo 07: Introdução à programação orientada à objetos
Java Básico - Módulo 07: Introdução à programação orientada à objetos Java Básico - Módulo 07: Introdução à programação orientada à objetos
Java Básico - Módulo 07: Introdução à programação orientada à objetos
 
Análise para licenciatura g,ávila completo.pdf
Análise para  licenciatura g,ávila completo.pdfAnálise para  licenciatura g,ávila completo.pdf
Análise para licenciatura g,ávila completo.pdf
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
Aplicação do Teorema de Thévenin em circuitos com malhas
Aplicação do Teorema de Thévenin em circuitos com malhasAplicação do Teorema de Thévenin em circuitos com malhas
Aplicação do Teorema de Thévenin em circuitos com malhas
 
Pitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - ConceitosPitagoras - Introdução a Programação Orientada a Objetos - Conceitos
Pitagoras - Introdução a Programação Orientada a Objetos - Conceitos
 
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
Pitagoras - Introdução a Programação Orientada a Objetos - Encapsulamento, Ac...
 
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão FinalPitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final
 
Análise de circuitos edminister
Análise de circuitos edministerAnálise de circuitos edminister
Análise de circuitos edminister
 
Teoremas exer resolvido
Teoremas exer resolvidoTeoremas exer resolvido
Teoremas exer resolvido
 
Circuitos elétricos joseph a. edminister - coleção schaum
Circuitos elétricos   joseph a. edminister - coleção schaumCircuitos elétricos   joseph a. edminister - coleção schaum
Circuitos elétricos joseph a. edminister - coleção schaum
 
Circuitos eletricos 1 - Circuitos Elétricos em Corrente Contínua
Circuitos eletricos 1 - Circuitos Elétricos em Corrente ContínuaCircuitos eletricos 1 - Circuitos Elétricos em Corrente Contínua
Circuitos eletricos 1 - Circuitos Elétricos em Corrente Contínua
 
47781762 curso-de-circuitos-electricos
47781762 curso-de-circuitos-electricos47781762 curso-de-circuitos-electricos
47781762 curso-de-circuitos-electricos
 
Circuitos electricos schaum
Circuitos electricos   schaumCircuitos electricos   schaum
Circuitos electricos schaum
 

Semelhante a Poo

java_avancado.pdf
java_avancado.pdfjava_avancado.pdf
java_avancado.pdf
GersonZavala2
 
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptxAULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AurelcioOliveira
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
Saulo Arruda
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
Infogenius
 
Classes objetos
Classes objetosClasses objetos
Classes objetos
nikson123
 
Guia Rápido Java
Guia Rápido JavaGuia Rápido Java
Guia Rápido Java
Matheus Pinto
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
Pedro De Almeida
 
Script c
Script cScript c
Script c
Raphael
 
Java 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita PolimorfismoJava 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita Polimorfismo
Regis Magalhães
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
Filipo Mór
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Professor Samuel Ribeiro
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
Ryan Padilha
 
Construtor em Java
Construtor em JavaConstrutor em Java
Construtor em Java
Ederson Lima
 
Java11
Java11Java11
Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Como usar a documentação da API Java 2
Como usar a documentação da API Java 2
Denis L Presciliano
 
Construtores Java
Construtores JavaConstrutores Java
Construtores Java
guilhermeafc
 
03 fundamentos java
03 fundamentos java03 fundamentos java
03 fundamentos java
Raytssa Martins
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
Regis Magalhães
 
Aula5
Aula5Aula5
Aula5
fkimura
 
Asp.Net Módulo3
Asp.Net  Módulo3Asp.Net  Módulo3
Asp.Net Módulo3
michellobo
 

Semelhante a Poo (20)

java_avancado.pdf
java_avancado.pdfjava_avancado.pdf
java_avancado.pdf
 
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptxAULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
 
Classes objetos
Classes objetosClasses objetos
Classes objetos
 
Guia Rápido Java
Guia Rápido JavaGuia Rápido Java
Guia Rápido Java
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Script c
Script cScript c
Script c
 
Java 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita PolimorfismoJava 09 Heranca Reescrita Polimorfismo
Java 09 Heranca Reescrita Polimorfismo
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
 
Construtor em Java
Construtor em JavaConstrutor em Java
Construtor em Java
 
Java11
Java11Java11
Java11
 
Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Como usar a documentação da API Java 2
Como usar a documentação da API Java 2
 
Construtores Java
Construtores JavaConstrutores Java
Construtores Java
 
03 fundamentos java
03 fundamentos java03 fundamentos java
03 fundamentos java
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
 
Aula5
Aula5Aula5
Aula5
 
Asp.Net Módulo3
Asp.Net  Módulo3Asp.Net  Módulo3
Asp.Net Módulo3
 

Poo

  • 1. Programação Orientada a Objeto POO FRANK COELHO ENGENHEIRO DE SOFTWARE ESPECIALISTA NA PLATAFORMA .NET Programação orientada a objeto (C# e Visual Basic)
  • 2. Todas as linguagens gerenciadas no .NET Framework, como por exemplo Visual Basic e C# oferecem suporte completo para programação orientada a objeto, incluindo encapsulamento, herança e polimorfismo. Encapsulamento significa que um grupo de propriedades, métodos e outros membros relacionados são tratados como uma unidade ou um objeto único. Herança descreve a habilidade de se criarem novas classes baseadas em uma classe existente. Polimorfismo significa que você pode ter múltiplas classes que podem ser usadas intercambiavelmente, mesmo que cada classe implemente as mesmas propriedades e métodos de modos diferentes.
  • 3. Classes e Objetos Os termos classe e objeto são às vezes usados representando a mesma coisa, mas na verdade, classes descrevem o tipo de objetos, enquanto objetos são instâncias úteis de classes. Dessa forma, o ato de criar um objeto é chamado de instanciação. Usando a analogia da planta, a classe é a planta, e o objeto é a construção feita daquela planta. class SampleClass { } Definindo uma classe: O Visual Basic e o C# também fornecem uma versão light de classes chamadas estruturas que são úteis quando você precisa criar uma grande matriz de objetos e não deseja consumir muita memória para isso. Definindo uma estrutura: struct SampleStruct { }
  • 4. Membros de Classe Cada classe pode ter membros de classe diferentes que incluem propriedades que descrevem dados de classe, métodos que definem o comportamento da classe e eventos que fornecem comunicação entre classes e objetos diferentes. Propriedades e campos Campos e propriedades representam informações que um objeto contém. Campos são como variáveis, porque eles podem ser lidos ou definidos diretamente. Para definir um campo: Class SampleClass { public string sampleField; }
  • 5. As propriedades têm procedimentos get e set, o que oferece mais controle sobre como os valores são definidos e retornados. C# e Visual Basic permitem que você crie um campo particular para armazenar o valor da propriedade ou use as propriedades auto implementadas para chamadas que criam este campo automaticamente em segundo plano e fornecem lógica básica para os procedimentos de propriedade. Para definir uma propriedade implementada automaticamente: class SampleClass { public int SampleProperty { get; set; } }
  • 6. Se você precisar realizar algumas operações adicionais para leitura e gravação do valor da propriedade, defina um campo para armazenar o valor da propriedade e forneça a lógica básica para armazenar e recuperá-lo: class SampleClass { private int _sample; public int Sample { // Return the value stored in a field. get { return _sample; } // Store the value in the field. set { _sample = value; } } } A maioria das propriedades possuem métodos ou procedimentos para definir e obter o valor da propriedade. No entanto, você pode criar propriedades somente leitura ou somente gravação para impedir que elas sejam modificadas ou lidas. No Visual Basic você pode usar as palavras- chave ReadOnly e WriteOnly . Em C#, é possível omitir o método de propriedade get ou set . No entanto, no Visual Basic e no C#, as propriedades implementadas automaticamente não podem ser somente leitura ou somente gravação.
  • 7. Métodos Método é uma ação que um objeto pode executar. Para definir um método de uma classe: class SampleClass { public int sampleMethod(string sampleParam) { // Insert code here } } Uma classe pode ter várias implementações ou sobrecargas do mesmo método que diferem no número de parâmetros ou tipos de parâmetro. public int sampleMethod(string sampleParam) {}; public int sampleMethod(int sampleParam) {} Na maioria dos casos, você declara um método em uma definição de classe. No entanto, o Visual Basic e o C# também suportam os métodos de extensão que permitem que você adicione métodos a uma classe existente fora da definição real da classe.
  • 8. Construtores Construtores são os métodos da classe que são executados automaticamente quando um objeto de um determinado tipo é criado. Os construtores geralmente inicializam os membros de dados do novo objeto. Um construtor pode executar apenas uma vez quando uma classe é criada. Além disso, o código no construtor é sempre executado antes de qualquer outro código em uma classe. No entanto, você pode criar várias sobrecargas de construtor da mesma maneira que cria para qualquer outro método. Para definir um construtor para uma classe: public class SampleClass { public SampleClass() { // Add code here } }
  • 9. Destruidores Os destruidores são usados para destruir instâncias de classes. No .NET Framework, o coletor de lixo gerencia automaticamente a alocação e a liberação de memória para os objetos gerenciados em seu aplicativo. No entanto, você ainda pode precisar de destruidores para limpar os recursos não gerenciados que seu aplicativo criar. Pode haver apenas um destrutor para uma classe.
  • 10. Eventos Os eventos permitem que uma classe ou um objeto notifiquem outros objetos ou classes quando algo interessante ocorre. A classe que envia (ou gera) o evento é chamada de editor e as classes que recebem (ou manipula) o evento são chamadas de assinantes. Para obter mais informações sobre eventos, como são gerados e manipulados. C# • Para declarar um evento em uma classe, use a palavra-chave event (Referência de C#). • Para disparar um evento, chame o representante de evento. • Para assinar um evento, use o operador +=; para cancelar de um evento, use o operador -=.
  • 11. Classes Aninhadas Uma classe definida dentro de outra classe é chamada aninhada. Por padrão, a classe aninhada é privada. class Container { class Nested { // Add code here. } } Para criar uma instância da classe aninhada, use o nome da classe contêiner seguido pelo ponto e seguida pelo nome da classe aninhada: Container.Nested nestedInstance = new Container.Nested()
  • 12. Modificadores de acesso e níveis de acesso Todas as classes e membros de classe podem especificar o nível de acesso que eles fornecem a outras classes usando modificadores de acesso. Os modificadores de acesso a seguir estão disponíveis: Modificador do Visual Basic Modificador C# Definição Público (Visual Basic) public O tipo ou membro pode ser acessado por qualquer outro código no mesmo assembly ou em outro assembly que faça referência a ele. Particular (Visual Basic) private O tipo ou membro só pode ser acessado por código na mesma classe. Protegido (Visual Basic) protected O tipo ou membro só pode ser acessado por código na mesma classe ou em uma classe derivada. Friend (Visual Basic) internal O tipo ou membro pode ser acessado por qualquer código no mesmo assembly, mas não de outro assembly. Protected Friend protected internal O tipo ou membro pode ser acessado por qualquer código no mesmo assembly ou por qualquer classe derivada em outro assembly.
  • 13. Instanciar Classes Para criar um objeto, você precisa instanciar uma classe ou criar uma instância de uma classe. Depois de instanciar uma classe, você pode atribuir valores para as propriedades e os campos de instância e chamar métodos da classe. SampleClass sampleObject = new SampleClass(); // Set a property value. sampleObject.sampleProperty = "Sample String"; // Call a method. sampleObject.sampleMethod(); Para atribuir valores a propriedades durante o processo de instanciação de classe, usa inicializadores de objeto: // Set a property value. SampleClass sampleObject = new SampleClass { FirstProperty = "A", SecondProperty = "B" };
  • 14. Classes e membros estáticos (compartilhados) Um membro estático (compartilhado no Visual Basic) da classe é uma propriedade, um procedimento ou um campo compartilhado por todas as instâncias de uma classe. Para definir um membro estático (compartilhado): static class SampleClass { public static string SampleString = "Sample String"; } Para acessar o membro estático (compartilhado), use o nome da classe sem criar um objeto dessa classe: Console.WriteLine(SampleClass.SampleString); As classes estáticas (compartilhadas) no C# e os módulos no Visual Basic só têm membros estáticos (compartilhados) e não podem ser instanciados. Os membros estáticos (compartilhados) também não podem acessar propriedades, campos ou métodos não estáticos (não compartilhados)
  • 15. Tipos anônimos Tipos anônimos permitem que você crie objetos sem escrever uma definição de classe para o tipo de dados. Em vez disso, o compilador gera uma classe para você. A classe não tem nenhum nome utilizável e contém as propriedades que você que você especificar na declaração do objeto. Para criar uma instância de um tipo anônimo: // sampleObject is an instance of a simple anonymous type. var sampleObject = new { FirstProperty = "A", SecondProperty = "B" };
  • 16. Herança A herança permite que você crie uma nova classe que reutiliza, estende e altera o comportamento que é definido em outra classe. As classe cujos membros são herdados é chamada de classe base, e a classe que herda a esses membros é chamado de classe a derivada. No entanto, todas as classes no C# e no Visual Basic são implicitamente herdadas da classe Object que oferece suporte à hierarquia de classe .NET e fornece serviços de baixo nível a todas as classes. Observação Idiomas gerenciados no .NET Framework não oferecem suporte a várias heranças, ou seja, você pode especificar somente uma classe base para uma classe derivada. Herdando de uma classe base: class DerivedClass:BaseClass{} Por padrão, todas as classes podem ser herdadas. No entanto, você pode especificar se uma classe não deve ser usada como uma classe base ou criar uma classe que pode ser usada somente como uma classe base.
  • 17. Para especificar que uma classe não pode ser usada como classe base: public sealed class A { } Para especificar que uma classe pode ser usada apenas como uma classe base e não pode ser instanciada: public abstract class B { }
  • 18. Substituindo membros Por padrão, uma classe derivada herda todos os membros da classe base. Se quiser alterar o comportamento do membro herdado, você precisará substituí-lo. Ou seja, você pode definir uma nova implementação do método, propriedade ou evento na classe derivada. Os modificadores a seguir são usados para controlar como as propriedades e métodos são substituídos: Modificador do Visual Basic Modificador C# Definição Substituível (Visual Basic) virtual (Referência de C#) Permite que um membro da classe seja substituído em uma classe derivada. Substituições (Visual Basic) override (Referência de C#) Substitui um membro virtual (substituível) definido na classe base. NotOverridable (Visual Basic) Sem suporte Impede que um membro seja substituído em uma classe herdeira. MustOverride (Visual Basic) abstract (Referência de C#) Exige que um membro da classe seja substituído na classe derivada. Sombras (Visual Basic) Modificador new (Referência de C#) Oculta um membro herdado de uma classe base
  • 19. Interfaces Interfaces, como classes, definem um conjunto de propriedades, métodos e eventos. Mas, ao contrário das classes, as interfaces não fornecem implementação. São implementados por classes e definidos como entidades separadas de classes. Uma interface representa um contrato, em que uma classe que implementa uma interface deve implementar cada aparência da interface exatamente como é definida. Definindo uma interface: interface ISampleInterface { void doSomething(); } Para implementar uma interface em uma classe: class SampleClass : ISampleInterface { void ISampleInterface.doSomething() { // Method implementation. } }
  • 20. Genéricos Classes, estruturas, interfaces e métodos no .NET Framework podem incluir parâmetros de tipo que definem tipos de objetos que podem armazenar ou usar. O exemplo mais comum de genéricos é uma coleção, onde você pode especificar o tipo de objetos a serem armazenados em uma coleção. Definindo uma classe genérica: Public class SampleGeneric<T> { public T Field; } Para criar uma instância de uma classe genérica: SampleGeneric<string> sampleObject = new SampleGeneric<string>(); sampleObject.Field = "Sample string";
  • 21. Delegados Um delegate é um tipo que define uma assinatura de método e pode fornecer uma referência a qualquer método com uma assinatura compatível. É possível chamar o método através do delegate. Representantes são usados para passar métodos como argumentos para outros métodos. Observação Os manipuladores de eventos nada mais são do que métodos chamados por meio dos representantes. Para obter mais informações sobre o uso de delegados na manipulação de eventos, consulte Manipulando e acionando eventos. Para criar um delegate: public delegate void SampleDelegate(string str);
  • 22. Para criar uma referência a um método que corresponda à assinatura especificado pelo delegate: class SampleClass { // Method that matches the SampleDelegate signature. public static void sampleMethod(string message) { // Add code here. } // Method that instantiates the delegate. void SampleDelegate() { SampleDelegate sd = sampleMethod; sd("Sample string"); } }
  • 26. Acredite você é capaz... Obrigado...