Jogue o famoso “Snake” no YouTube

Se você já teve um celular NOKIA antigo, provavelmente já deve ter jogado o jogo “SNAKE”. O jogo nada mais erá do que um tracinho que você controlava tentando desviar das limitações do video do celular e da própria calda que crescia a medida que se pegava as maçãs, que ná época eram uns quadrados.

Pois é se bateu uma nostalgia, ao ler as linhas acima. Você poderá matar essa saudade enquanto espera um video carregar no YOUTUBE, para isso basta pausa o video e segurar a seta esquerda do teclado.

A equipe testou o jogo “secreto” no seguinte video:

http://www.youtube.com/watch?v=CUbCMbW-BRE&feature=topvideos

Nova sensação da Internet “TWITCAM”

Muitos já devem ter ouvido falar no TWITTER, óbvio, com a inclusão digital que cada dia cresce mais e mais é dificil encontrar até entre crianças quem não tenha um twitter hoje. E LiveStream ?

Ok esse por aqui é um pouco menos conhecido, mas não menos utilizado que o TWITTER. Para quem não está ligando o nome a ferramenta o LiveStream trata-se de um site que visa capturar um video em tempo real e disponibiliza-lo na internet, para que outros possam assistir.

O que acontece se juntarmos o Twitter, o microblog mais famoso da internet, com o LiveStream, um dos mais populares sites de stream ?

O TwitCAM. Que em resumo simplista trata-se de um site para disponibiliar em tempo real um video seu, enquanto interage com o twitter. Podendo assim através do video incentivar alguém a te seguir.

Ontem a WebFinal testou o site como um usuário normal, e a principio me pareceu um pouco confuso. Em alguns momentos mesmo logado era necessário, logar novamente. Dificuldade em encontrar TwitCam´s, sendo necessário ir até o Twitter para “peneirá-los”. Mas me parece ser a nova sensação da internet.

Um alerta que deixo aqui é que enquanto navegava nos TWITCAM´s indicados pelos visitantes. Me deparo com alguns videos ao vivo de adolescentes menores de idade prometendo streptease ou até sexo, para ganhar seguidores no TWITTER. Galera cuidado, pedofilia é crime!

Outro caso também interessante, é que como a pornografia se espalha rápido na internet, o pouco que navegamos no TwitCAM, pudemos notar que em algumas TWITCAMS onde os seus donos pretendiam apenas demonstrar um pouco da sua vida pessoal ou bater papo com seus seguidores, outros usuários pediam por pornografia, chegando até a denunciar o profile de gente que simplesmente queria aproveitar essa nova ferramenta.

Enfim, achamos que tem tudo para virar a nova sensação da internet, mas se não for bem administrado poderá acabar trazendo muita dor de cabeça para seus donos.

Abraços

Equipe WebFinal

Sexta .NET – Aula 8 – Desenvolvendo para internet parte I

Boa noite pessoal, semana com novidades, colocamos nosso site no ar e aqui vamos para mais uma noite para os amantes de .NET.

Sexta .NET – Aula 8 – Desenvolvendo para internet parte I

Como funciona um WEB site?

HTML

Nasceu com a finalidade de estabelecer uma forma simples para publicar sites na internet.
Significa de forma literal, linguagem de marcação de hipertexto.
Sua estrutura mais básica compreende da tag “” delimitando o documento, dentro desta tag existe um cabeçalho delimitado pela tag “” e corpo delimitado por “”, onde se coloca os textos, imagens, vídeos…

Comentários em HTML

<!-- Comentário -->

As tags ou marcadores são estruturados da seguinte forma:

<!-- Inicio da tag -->
<nome_da_tag atributo=“valor”>

<!-- Fim da tag -->
</nome_da_tag>

<!-- ou uma tag vazia -->
<nome_da_tag atributo=“valor”>

Definindo o título de uma página.

<html>
<head>
<title>Meu Título</title>
</head>
</html>

Formatando um texto


<html>
<head></head>
<body>
<strong>Texto em negrito</strong><br />
<em>Texto em itálico</em>
</body>
</html>

Links Úteis

Maiores informações sobre HTML e suas tags:
http://www.w3schools.com/html/
http://www.w3schools.com/tags/

JAVASCRIPT

É uma linguagem de programação do lado do cliente (client-side), interpretada pelos browsers.
Comumente utilizada para validação de formulários e comunicação de forma assíncrona de dados com o servidor (conceito conhecido como AJAX).
Pode tanto aparecer em blocos delimitados por tags “<script>” em documentos html ou em arquivos separados.

<!-- JavaScript em blocos delimitados -->
<script language="javascript“>
alert(“Mensagem”);
</script>

<!-- Link para um arquivo de códigos JavaScript -->
<script src=“codigos.js" type="text/javascript"></script>

Exemplo:


<html>
<head>
<script language="javascript“>

function Carregar()
{
document.getElementById(“texto").innerHTML = "Pronto...";
}

</script>
</head>
<body>
<a href="#" onclick=“Carregar()">Próxima página</a>
<div id=“texto"></div>
</body>
</html>

O Visual Studio oferece aos desenvolvedores, além de inline sense para JavaScript, compatibilidade entre os objetos criados no servidor com os pseudos objetos JavaScript presentes no cliente, lembrando que JavaScript não é Orientado a Objeto.

Links Úteis

Maiores informações sobre JavaScript:
http://www.w3schools.com/js/

Artigo sobre a pseudo orientação a objeto do JavaScript no Visual Studio:
http://msdn.microsoft.com/pt-br/magazine/cc163419.aspx

ASP.NET

Tecnologia mais evoluída e mais flexível, sucessora do Active Server Pages (ASP)

O processamento dos formulários web (Web Forms) são feitos do lado do servidor (Server-side)
Independente de linguagem

Possui grande facilidade para interagir com Web Services, assim como facilidade para desenvolver um.
Independente de browser (o .NET Framework reconhece a versão do browser e envia o código html e script correspondente)

O ASP.NET pode ser utilizado com qualquer linguagem suportada pelo CLR.

Permite separação entre código e o design da página.

Provê, além de muitas outras funcionalidades, facilidade de gerenciamento de persistência de estado no lado cliente (view state) e no lado servidor (session).

Componentes de uma Página ASP.NET

Componente Visual
Visão de Design
Visão de HTML

Lógica de interface de usuário

Como implementar código

Três métodos para adicionar código:
Colocando código no mesmo arquivo do conteúdo (misto)

Colocando código numa sessão separada (code-block) no arquivo de conteúdo (código inline)

Colocando código em um arquivo separado (code-behind pages)

Code-behind pages é a opção padrão no Visual Studio .NET

ASP.NET Vantagens

  • Permite criação de Web Forms, Mobile Web Forms e Web Services.
  • ASP.NET é parte do .NET Framework.
  • Múltiplas linguagens e programação orientada a objetos:
    • C#,VB.Net, C++.Net, etc.
  • Com o Visual Studio.NET:
    • Ferramenta RAD para construção de aplicações web.
    • Suporte Debugging.
  • Separação de Código e Interface.
  • Proteção de Código Fonte.
  • Mantém automaticamente o estado da página.
  • Suporte MultiBrowser.
  • Simples Validação dos Forms.
  • Para grande parte das aplicações não é necessário conhecer HTML e JavaScript.

CICLO DE VIDA DE UMA PÁGINA ASP.NET

O ciclo de vida de uma página ASP.NET apresenta cinco estágios básicos:

Como funciona o ASP.NET?

Internet Information Services (IIS)

  • Conjunto integrado de serviços de rede
  • Permite publicar conteúdo e disponibilizar arquivos e aplicações em um ambiente Internet/Intranet.
  • Integrado ao sistema operacional
  • Dotado de uma interface administrativa cem por cento gráfica
  • Web Server
  • Hospedagem de web sites
  • Site FTP e grupos de notícias
  • Diretório Virtual

IDE – Servidor Web Interno

Utilizado durante o desenvolvimento da aplicação
Não necessita de configurações adicionais
Não precisa IIS, porém pode ser integrado a ele
Não necessita Extensões FrontPage

Bom pessoal, ficamos por aqui, hoje abordamos somente um overview sobre o fluxo que se passa para desenvolver para web.
Semana que vem iremos aprofundar mais e começar a colocar a mão na massa programando para a Web utilizando esta poderosa linguagem.

Aguardo vocês na próxima semana!

Att,
Victor Santos

Site do Olá turista fora dos padrões WEB

Muitos hoje em dia já sabem o quanto é importante seguir os padrões WEB, inclusive a própria Microsoft que nunca fez muita questão de seguir-los, com o IE8 e agora com o IE9, começam a mudar um pouco esse aspecto.

Porém pior do que navegadores que não seguem padrões é também um site que também não segue o padrão.

Quando o Internet Explorer não tinha nenhum concorrente que poderia destroná-lo como lider em navegador web, os poucos usuários de SAFARI, OPERA, e FIREFOX. Deparavam-se com vários sites com telas de imcopatbilidade do conteúdo com esse navegador.

Hoje em dia essa menagem é menos comum, mais ainda acontece em alguns casos. Um caso recente que me deparei foi o do novo site do Ministério do Turismo em Parceria com a Fundação Roberto Marinho. O Olá Turista.

Para quem não sabe o Olá Turista trata-se de um projeto que oferece cursos online gratuitos de inglês e espanhol para profissionais que devem ter contato com visitantes estrangeiros durante a Copa do Mundo de 2014.

Porém ao tentar entrar o site com o FIREFOX olha com que telas nos deparamos:

Bom ok, os desenvolvedores pisaram na bola com os padrões WEB. Mas queria conhecer o site e resolvi abrir com o Internet Explorer 8, citado na mensagem acima como “compatível”. Eis que me deparo com outra tela.

Bom no fim acabei desistindo de conhecer o site. E fica ai minha frustração ao tentar visitar um site que não segue o padrão WEB. E vocês recentemente viram algum site com esse tipo de aviso ? Conte-nos mais.

Att

Eric Yamashita

Sexta .NET – Aula 7 – Orientação a Objeto – Parte III

Boa tarde pessoal, aqui vamos com a aula da semana.

O conteúdo que veremos hoje complementa o que estamos acompanhando nas útltimas semanas, volto a dizer que é muito importante que sigam e treinem bastante a orientação a objeto, pois ela é crucial e pode ser um diferencial em sua carreira.

Vamos ao que interessa?

Sexta .NET – Aula 7 – Orientação a Objeto – Parte III

Membros de Classe
Pertencem à classe e não às instâncias
Podem ser atributos, propriedades e métodos

public class Cliente
{
public static string tipoEntidade = “Teste”;
public static void Excluir(int identificacao)
{
/* excluir cliente com essa identificação */
}
}
...
Console.WriteLine(“Tipo de Entidade: {0}”, Cliente.tipoEntidade);
...
int clienteId = 5;
Cliente.Excluir(clienteId);

Construtores de classe – estáticos, compartilhados, globais
São executados antes do primeiro objeto do tipo em questão ser criado ou do primeiro método de classe ser invocado
Não possuem parâmetros
Não apresentam modificadores de acesso
Podem co-existir com construtores de instâncias
Utilizados para inicializar uma classe

Construtores de Classe

public class Cliente
{
private static Random numeroRandomico;
public int senhaCliente;

static Cliente()
{
numeroRandomico = new Random();
}

public void CarregarSenha()
{
senhaCliente = numeroRandomico.Next();
}
}

Classes Abstratas

Pode acontecer que ao escrever um método para uma classe base você não saiba como ele será implementado. Neste caso, a implementação será feita pela classe que herdar o método (a classe filha).

Pode acontecer também que você saiba que um determinado método será sobreposto com certeza na classe filha; então, por que definir sua implementação se ela não será usada?

Nestes casos você apenas define a assinatura do método e deixa a definição por conta da classe que irá herdar a classe pai.

Estas classes são então chamadas classes abstratas, o método que você não implementou é chamado de método abstrato.

As classes abstratas não podem ser instanciadas através da palavra chave New.

Uma classe abstrata é uma classe base genérica
Contém métodos abstratos que devem ser implementados nas classes que derivam dela
Um método abstrato não apresenta implementação na classe base

public abstract class Pessoa {
public abstract void Cadastrar();
public abstract string Nome { get; set; }
public abstract int Id { get; }
public virtual void Viajar() { /* Ação */ }
}

Pode conter membros não-abstratos

Derivando a classe abstrata e implementando os membros abstratos

public class Diretor : Pessoa
{
public override void Cadastrar()
{ /* Ações */ }
public override string Nome
{
get { /* Implementação get */ }
set { /* Implementação set */ }
}
public override int Id
{
get { /* Implementação get */ }
}
}

Interfaces

Uma interface é parecida com uma classe abstrata, a diferença é que uma classe abstrata pode possuir métodos que não estejam implementados e pode possuir métodos que estejam implementados.

Uma interface possui somente métodos que não estão implementados e que devem ser implementados pela classe que usar a interface.

Como o C# não suporta herança múltipla as interfaces permitem que uma classe estenda múltiplas interfaces contornando o problema.

Uma interface no C# não pode conter atributos, somente pode ter métodos, propriedades e eventos. Todos os membros de uma interface são públicos e não podem usar um modificador de acesso.

A classe que implementa a interface deve possuir a definição de todos métodos existentes na interface. Esta definição deve possuir o mesmo nome e a mesma assinatura, retorno e parâmetros, do método na interface.

O nome da classe e o nome da interface são separados por dois pontos(:).
Uma interface define a mesma funcionalidade e comportamento à classes não relacionadas diretamente

Declarando a interface

public interface IProduto
{
bool EPerecivel { get; }
Fornecedor RecuperarFornecedor();
void RegistrarVenda(Cliente cliente);
}

Implementando a interface

public class Computador : IProduto
{
private bool ePerecivel;
public bool EPerecivel
{
get { return ePerecivel; }
}
public Fornecedor RecuperarFornecedor()
{
return new Fornecedor();
}
public void RegistrarVenda(Cliente cliente)
{
// Rotina para registrar vendas
}
}

IS e AS

if (computador is IProduto)
{
// ações
}

IProduto produto = computador as IProduto;

if (produto != null)
{
Fornecedor fornecedor = produto.RecuperarFornecedor();
}

Pode tornar o comportamento de seus objetos semelhante ao comportamento dos objetos da .NET Framework
Exemplos:
ICollection
IComparer
IDictionary
IEnumerable

public class Cliente : Pessoa, IComparable
{
...
}

Estruturas de Repetição

foreach
Esta estrutura de repetição é uma variação do for.
Sua diferença está no fato de ser necessário apenas especificar uma variável e a coleção ou array cujos registros serão percorridos.

int[] i = { 1, 3, 5, 7, 9 };
foreach (int j in i)
{
Response.Write(j);
Response.Write("
");
}

Estruturas

Estruturas são tipos por valor, que podem conter:
Um construtor
Constantes
Atributos
Métodos
Propriedades
Uso recomendado para representar objetos leves e/ou que eventualmente podem constituir arrays de grande dimensão.
Não podem ser herdados, porem podem implementar Interfaces.

Exemplo de uma estrutura:

struct Circulo {
private int _raio; // Atributo

public double Circunferencia // Propriedade
{ get { return 2 * _raio * Math.PI; } }
// Regra específica para retornar um valor.

public Circulo(int raio) // Construtor com um argumento
{ this._raio = raio; } // Atribuição do valor do argumento
} // para o atributo do objeto.

… Dentro do evento Page_Load

Circulo meuCirculo = new Circulo(10);
// Instancia de uma estrutura.
Response.Write(meuCirculo.Circunferencia);
// Imprime o valor de uma propriedade

}

Exemplo de overload de métodos:

... Dentro da mesma estrutura do exemplo anterior:

public void DiminuirRaio(){ // Método simples sem argumentos
if (_raio > 1)
_raio–;
}

public void DiminuirRaio(int valor){// Overload do método anterior
if (_raio – valor > 1) // com um argumento
_raio -= valor;
}

… Dentro do evento Page_Load

meuCirculo.DiminuirRaio(); // Chamando o método sem argumentos
meuCirculo.DiminuirRaio(2); // Chamando o overload
// do método anterior

Bom, o conteúdo preparado para este tema é muito extenso.
Vamos parar por aqui e na semana que vem continuamos!

Com todo o apresentado nas últimas semanas finalizamos o ciclo de Orientação a Objeto.
O próximo tema que abordaremos será Desenvolvendo para internet -Parte I

Aguardo vocês e bons estudos!

Novo golpe com telas falsas de cartões de crédito

Agora, o popular cavalo de troia tenta enganar os usuários de bancos com telas dos programas de segurança online dos cartões de crédito.

O botnet ZeuS está demonstrando um novo truque: aparecer em computadores infectados com uma tela falsa dos programas de segurança “Verified by Visa” ou “MasterCard SecureCode Security”.

Esses softwares legítimos para prevenção de fraudes das empresas Visa e Mastercard pedem aos usuários que entrem com uma senha ao fazer compras onlines com os cartões como uma medida de segurança adicional.

Quando você entra no site do seu banco, ele diz que você deve se inscrever no programa ‘Verified by Visa’ que é regulamentado e necessário”, explica o CEO da companhia de segurança Trusteer, Mickey Boodaei.

O novo ataque com as telas falsas foi desenvolvido para enganar os clientes e obter informações de identificação pessoal, documentos, números do cartão de crédito e data de vencimento, entre outros, diz Boodaei. “Estamos investigando o ZeuS para encontrar outras variantes do malware.”

A Visa afirma que seu programa “Verified by Visa” é uma forma de ir além das detecções de fraude já existentes com uma “camada extra de segurança no momento em que as informações do cartão de crédito são inseridas online. O serviço ajuda a prevenir o uso não autorizado na web por meio de uma confirmação de identidade com uma senha adicional.

Por isso ao ser constatado que seu computador está infectado, procure resolver o problema antes de acessar o site de seu banco, para que não tenha problemas futuramente.

Fonte: idgnow

Sexta .NET – Aula 6 – Orientação a Objeto – Parte II

Boa noite pessoal,

Continuando nossa aula seguindo o tema iniciado semana passada aqui vamos.

Sexta .NET – Aula 6 – Orientação a Objeto – Parte II

Para dar sequencia ao conteúdo, falaremos hoje sobre Herança e Encapsulamento de dados.

Herança

A herança está relacionada às hierarquias e às relações entre os objetos.
É o mecanismo em que uma classe filha compartilha automaticamente todos os métodos e atributos de sua classe pai.
A herança permite implementar classes descendentes implementando os métodos e atributos que se diferenciam da classe pai.

Tipos de Herança

Simples
Quando uma classe herda as propriedades de uma única classe pai.

Múltipla
Ocorre quando uma classe tem mais de um pai.

Criando uma classe derivada

public class Pessoa
{
public string nome;
protected int id;

public void Cadastrar() { /* rotina para cadastrar */ }
}
public class Cliente : Pessoa
{
public void Comprar(int idProduto) { /* ação */ }
}
...
Cliente proximoCliente = new Cliente(“Rodrigo”);

proximoCliente.Cadastrar();
proximoCliente.Comprar(100);

Invocando um construtor da classe base na classe derivada

public class Pessoa
{
public Pessoa(string nome)
{ Console.WriteLine(“Construindo Pessoa de Nome {0}”,nome); }
}
public class Cliente : Pessoa
{
public Cliente(string nome) : base(nome)
{ Console.WriteLine(“Construindo Cliente”); }
}
...
Cliente proximoCliente = new Cliente(“Rodrigo”);
...
Construindo Pessoa de Nome Rodrigo
Construindo Cliente

Classes Seladas – são classes que não podem ser extendidas ou sobrescritas, ou seja, não podemos ter classes derivadas de classes seladas.

public sealed class Pessoa
{
// Membros da Classe Pessoa
}

Em C#, as seguintes palavras-chave são úteis para explorar o conceito de herança:

Polimorfismo

Polimorfismo significa: “Muitas Formas” e representa o fato de uma determinada característica ser diferente para cada filho.

Partimos de um objeto mais simples e que vai evoluindo. Os conceitos do objeto pai continuam a existir, mesmo que tenham sofrido modificações ou assumido novas formas.

Utilizando métodos virtuais

public class Pessoa {
public virtual void Viajar() {
/* Ação */ }
}
public class Diretor : Pessoa {
public override void Viajar() {
base.Viajar();
/* Ações Particulares da Classe Diretor */
}
}
public class Vendedor : Pessoa {
public override void Viajar() {
base.Viajar();
/* Ações Particulares da Classe Vendedor */
}
}

Encapsulamento

Encapsulamento é o ato de esconder do usuário informações que não são de seu interesse.
O objeto atua como uma caixa preta, que realiza determinadas operações mas o usuário não sabe e não precisa saber exatamente como.
Basicamente o encapsulamento separa os elementos visíveis de um objeto dos invisíveis.

Modificadores de Classes

  • Public: permite que a classe seja acessada por qualquer assembly.
  • Sealed: não permite que a classe seja herdada.
  • Partial: permite que a classe tenha seu escopo dividido em dois arquivos.
  • Static: especifica que a classe somente tem membros estáticos. Não pode ser instanciada.
  • Abstract: define moldes para classes filhas. Não pode ser instanciada.

Modificadores de membros

  • Public: permite que os membros das classes sejam acessados por qualquer outro escopo.
  • Private: acesso restrito ao escopo da classe.
  • Protected: acesso restrito a classe e as derivadas.
  • Internal: permite acesso somente por classes do mesmo assembly.
  • Static: permite acesso, sem necessidade do objeto ser instanciado.
  • Abstract: são métodos de classes Abstract que não possuem implementação.
  • Virtual: permite que os métodos sejam sobrescritos por classes filhas.
  • Readonly: limita acesso a somente leitura aos atributos da classe.

Propriedades

São métodos que protegem acesso aos membros da classe

public string Nome
{
get { return nomeCliente; }
set { nomeCliente = value; }
}

string nomeCliente = novoCliente.Nome;
novoCliente.Nome = “Steve Ballmer”;

Bom pessoal, ficamos por aqui.
Espero que verifiquem atenciosamente este material e o de semana passada pois são fundamentais para que possamos ser desenvolvedores conscientes e possuir um diferencial de mercado.

Aguardo vocês aqui para semana que vem, estaremos abordando mais sobre orientação a objeto.

Teremos Orientação a objeto – Parte III onde falaremos sobre:
Membros de Classe
Classes Abstratas
Interfaces

Até lá!

Att,
Victor Santos

Recomendamos: Firefox 4 Beta

Sim pessoal, sabemos que o Firefox 4 ainda está em fase beta porém recomendamos a utilização deste navegador.

A nova versão do browser da Mozilla vem com um visual mais agradável, mais privacidade e o melhor suporte ao HTML5 e ao CSS3!

Nós da WebFinal já desenvolvemos projetos utilizando estas novas “tecnologias”, inclusive nosso site oficial que está saindo do forno é gerado sob este novo conceito de web!

Preview visual do novo programa:
Firefox4

Faça o download direto do site oficial: http://www.mozilla.com/en-US/firefox/beta/

Att,
Equipe Webfinal

Microsoft encerrou suporte ao Windows 2000 e XP

Bom pessoal, a notícia é antiga mas vale a pena relembrar.

A Microsoft anunciou em seu blog oficial em 25 de Fevereiro que estaria finalizando suporte para o Windows XP SP2, Windows 2000 e Windows Vista RTM.

Como estamos próximos da data limite para Windows XP SP2 e Windows 2000 ressaltamos aqui a notificação:

No dia 13 de Julho de 2010, também se encerrará o suporte a todas as versões do Windows 2000 e Windows XP Service Pack 2. Para quem ainda utiliza o Windows XP SP2, recomendamos a atualização para o Windows XP Service Pack 3, pelo Microsoft Update website. Para os clientes que ainda utilizam o Windows 2000, mais uma vez sugerimos dar um passo à frente e considerar uma possível migração para o Windows 7.

Manter o sistema operacional sempre atualizado é bom para que possamos desfrutar de uma melhor segurança.
Para os utilizadores das versões que não vão mais possuir suporte é interessante que visitem o link a seguir:
www.windows.com.br/ciclodevida
Nesta página verão um passo-a-passo do que é necessário fazer para atualizar seu sistema operacional.

Se atentem para as datas limites de suporte e mantenham-se sempre atualizados.

Att,
Equipe WebFinal

Sexta .NET – Aula 5 – Orientação a Objeto – Parte I

Bom dia Pessoal, primeiramente gostaria de pedir desculpas pelo atraso no lançamento desta aula.
Ontem tive alguns probleminhas após as 18:00 e não foi possível entrar no sistema.

Mas salvo o atraso, o que nos importa é não ficar sem conteúdo, aqui vamos então!

Tópico abordado: Orientação a Objeto – Parte I

Conceitos de Orientação a Objeto

Estruturada X Orientada a Objeto

Benefícios da Orientação a Objeto

Classe

É um conjunto de códigos de programação que incluem a definição dos atributos e dos métodos necessários para a criação de um ou mais objetos.

Contém toda a descrição da forma do objeto, é um molde para a criação do objeto, é uma matriz geradora de objetos, é a fábrica de objetos.

Uma classe também é um tipo definido pelo usuário.

Objeto ou Instância

Tem determinadas propriedades que o caracterizam e que são armazenadas no próprio objeto. As propriedades de um objeto são chamadas ainda de atributos.
O objeto interage com o meio e em função de excitações que sofre, realiza determinadas ações que alteram o seu estado (atributos).
Um objeto é uma entidade única que reúne atributos e métodos, ou seja, reúne as propriedades do objeto e as reações aos estímulos que sofre.

Classes e Objetos

Declaração de Classes e Objetos

Declarando uma Classe:

class Pessoa
{
string nome;
void Andar() { }
}

Declarando um Objeto:

Endereco objEndereco = new Endereco();

Atributos e Métodos

Atributos
Atributos de Classe
Quando um atributo é dividido entre todos os objetos criados, ele é armazenado na classe.
EX: Um contador de relógios criados.

Atributos de Objeto
Quando um atributo é individual ele é armazenado no objeto.
EX: A hora de um relógio.

string nome = “Bill”;
int idade = 53;

Métodos

As ações ou comportamento dos objetos são chamados, na orientação a objeto, de métodos, assim, um método é uma função, um serviço fornecido pelo objeto.
Os comportamentos do objeto são definidos na classe através dos métodos e servem para manipular e alterar os atributos do objeto.
Em um programa orientado a objeto, as excitações são representadas por mensagens que são enviadas a um objeto. Uma mensagem pode ser gerada pelo usuário, por exemplo, ao clicar o mouse.

Um método é um comando que representa uma ação

class Cliente {
private int produtosAdquiridos;
public bool EClienteEspecial() {
if (produtosAdquiridos < 250) return false; return true; } public void ComprarEspecial() { /* AÇÃO */ } } ... Cliente proximoCliente = new Cliente(); bool clienteEspecial = proximoCliente.EClienteEspecial(); if (clienteEspecial) proximoCliente.ComprarEspecial();

Passando parâmetros por valor

class Cliente {
private int produtosAdquiridos;

public void DefineProdutosAdquiridos(int quantidade)
{
produtosAdquiridos = quantidade;
}
}
...
Cliente novoCliente = new Cliente();
int produtos = 255;

novoCliente.DefineProdutosAdquiridos(produtos);
//OR
novoCliente.DefineProdutosAdquiridos(200);

Passando parâmetros por referência (usando ref)

public void RetornaEndereco(ref int numero, ref string rua)
{
numero = this.numero;
rua = this.rua;
}

int numeroLocal = 0;
string ruaLocal = “”;

novoCliente.RetornaEndereco(ref numeroLocal, ref ruaLocal);

// numeroLocal e ruaLocal recebem novos valores

Passando parâmetros por referência (usando out)

public void RetornaEndereco(out int numero, out string rua)
{
numero = this.numero;
rua = this.rua;
}

int numeroLocal;
string ruaLocal;

novoCliente.RetornaEndereco(out numeroLocal, out ruaLocal);

// numeroLocal e ruaLocal são inicializados

Métodos - Sobrecarga

Utilizando sobrecarga de métodos

public void DefineProdutosAdquiridos(int novoNumero)
{
this.produtosAdquiridos = novoNumero;
}
public void DefineProdutosAdquiridos(int novoNumero, bool clienteModificado)
{
if (clienteModificado)
this.produtosAdquiridos = novoNumero;
}
public void DefineProdutosAdquiridos()
{
this.produtosAdquiridos = RecuperaProdutos(this.ClienteID);
}

Construtores

Construtores são métodos especiais responsáveis pela implementação de ações necessárias para a existência de um objeto

public class Cliente
{
public int produtosAdquiridos;
public readonly bool clienteEspecial;

//Construtor default
public Cliente()
{
if (this.produtosAdquiridos > 250)
this.clienteEspecial = true;
else
this.clienteEspecial = false;
}
}

Bom pessoal, o conteúdo de hoje é muito complexo e necessita que tenha bastante cuidado, pois o bom entendimento da orientação a objeto é fundamental para que possamos ser bons desenvolvedores .NET.
Vou parando o conteúdo neste tópico e retornaremos na próxima sexta-feira com o Tópico Herança e Polimorfismo que complementa este conteúdo de hoje.

Mais uma vez peço desculpas pelo atraso na publicação.

Att,
Victor Santos