segunda-feira, 28 de abril de 2008

Programação Orientada a Objetos

Olá CCN-Aguias, vamos discutir mais um tema: A Programação Orientada a Objetos

Programação orientada a objetos

É um paradigma de programação onde o desenvolvedor é levado a abstrair o mundo real ou imaginário pelo uso de objetos que estão associados diretamente às “coisas” deste mundo real. Falando de maneira mais objetiva, trata-se de uma maneira diferente de programar que tem como vantagens a proximidade com a realidade e o reaproveitamento de código.

A aproximação da realidade ocorre quando abstraímos o mundo real, pensando nos objetos e suas características (propriedades que os caracterizam juntamente com as tarefas que eles são capazes de executar – não se preocupe, veremos isto novamente adiante). O reaproveitamento de código é fruto da especialização dos objetos, pois objetos mais especializados são mais fáceis de reaproveitar em novos sistemas.

Este conceito de programação não é algo propriamente novo, pois no final dos anos 60 já havia iniciativas para desenvolver uma linguagem de programação orientada a objetos.

Java

É uma linguagem de programação orientada a objetos desenvolvida na década de 90 por James Gosling da Sun Microsystems. Este projeto tinha como objetivo principal o desenvolvimento de uma linguagem que deveria se tornar a próxima onda do mundo digital e, para isso foram estipuladas algumas restrições como atender ao paradigma de programação orientada a objetos e ser portável, assim a Sun teria uma linguagem de programação de fácil assimilação dada a proximidade com a realidade além de conseguir que os programas criados pudessem ser executados em plataformas distintas (inicialmente geladeiras, televisões e computadores, porém atualmente temos Java sendo executado em computadores de mão, computadores de grande porte, celulares além das geladeiras).

O Java foi desenvolvido de forma a usar os conceitos de orientação a objetos sem perder a robustez. Esta robustez pode ser garantida pela eliminação do acesso aos ponteiros do sistema operacional juntamente com o mecanismo de coleta de lixo (Garbage Collection).

Garbage Collection

Mecanismo criado para liberar a memória que não está sendo mais utilizada. Os programas Java alocam a memória de forma dinâmica em tempo de execução, porém o próprio ambiente Java se incumbe de desalocar a memória que não está mais sendo utilizada.

Fundamentos da Programação Orientada a Objetos

A Programação Orientada a Objetos pressupõe a utilização de alguns fundamentos e conceitos básicos e, conseqüentemente, possui uma terminologia bastante característica.

Objetos

Desde muito pequenos estamos acostumados a lidar com objetos. Usando a abstração conseguimos associar objetos que possuem características em comum e, desta forma agrupá-los em categorias, por exemplo, com o tempo aprendemos que um objeto que possui quatro rodas, carrega passageiro e tem um volante é denominado carro. Depois de certo tempo acabamos por descobrir que as partes componentes de um carro também são objetos, ainda aprendemos que o objeto carro é, na realidade, a especialização de um objeto veículo.

Objetos são, em última instância, todas as coisas que podemos identificar no mundo real ou imaginário. Como exemplos de objetos, podemos citar carro, casa, árvore, fada e duende.

Os objetos não são estáticos, eles são capazes de realizar tarefas e interagir com o meio através do envio e recebimento de estímulos capazes de alterar seu estado. Para a POO (Programação Orientada a Objetos), um objeto é uma entidade única que reúne atributos e métodos, ou seja, reúnem as propriedades dos objetos e as reações a estímulos que sofre.

As propriedades de um objeto são chamadas de atributos, ou ainda de variáveis de instância, e armazenam as características em comum que o objeto conhece sobre si próprio. Métodos são os nomes dados para as tarefas que um objeto é capaz de executar.

Classes

Uma classe é um projeto de um objeto, descreve um grupo de objetos com os mesmos atributos e métodos. As classes podem ser definidas como formas de fazer objetos, definindo o que os objetos sabem e o que são capazes de executar. Por analogia, deduzimos que os objetos são a materialização das classes, ou ainda que os objetos são instâncias de uma classe e, conseqüentemente, seguem as regras estipuladas por ela.

Representação gráfica da classe

Existe uma forma gráfica de representar uma classe a fim de facilitar a sua compreensão, esta forma é utilizada no Diagrama de Classes da UML (Unified Modeling Language). Em linhas gerais a representação gráfica consiste em dividir horizontalmente um retângulo em três partes, sendo que a parte superior deverá aparecer o nome da classe de forma centralizada; a parte intermediária terá uma lista com os atributos da classe, enquanto que na parte inferior aparecerão os métodos.

O nome da classe é importante para que ela seja identificável e, portanto possa ser utilizada na criação de instâncias dos objetos.

Os atributos possuem um tipo de dados específico (inteiro, real, uma classe e etc). Opcionalmente os atributos podem ser inicializados com valores padrões, comumente chamados de default.

Os métodos são compostos por seus respectivos nomes, uma lista de argumentos (opcional) e o tipo de dados que retorna. A este conjunto de informações é dado o nome de assinatura do método. Os argumentos de um método devem obrigatoriamente possuir um nome e um tipo de dados.

Os modificadores de visibilidade são usados para adicionar segurança de acesso aos atributos e métodos de um objeto, desta forma este mecanismo pode ser explorado a fim de permitir o acesso apenas aos atributos e métodos realmente necessários. São três os modificadores utilizados: público, privado e protegido, que na UML são representados pelos símbolos +, - e #, respectivamente.

Veremos mais detalhes em um futuro artigo.

Até a próxima.

Fabio Silva Ferreira
Desenvolvendo Soluções

quarta-feira, 23 de abril de 2008

Fotos da Galera

































sexta-feira, 18 de abril de 2008

Desenvolvimento em 3 Camadas - Parte 2

Olá Águias!

Hoje irei falar da camada de Conteúdo. Queria ter escrito este texto ontem, mas deu tempo. Vamos lá.

Lembra quando falei ontem de código sujo, manutenção e tudo mais? Vamos começar pela parte mais "fácil", que é a estruturação do conteúdo. Para esse tópico, você terá que aprender o xHTML. Alguns vão dizer "Mayck você escreveu errado, é HTML", mas não é xHTML mesmo. Aos que ainda não sabem, o HTML é uma Linguagem de Marcação - abordaremos isso em breve na série Sopa de Letras - usada na criação de páginas. Todos os browser's interpretam essa linguagem e marcam os textos de acordo com a TAG que a envolve. Abrindo um parênteses em nosso artigo, desde ontem tenho usado a palavra TAG com muita freqüência. A tradução de TAG do inglês seria etiqueta, não aquela de bons costumes. Mas no ramo da informática, usamos o termo TAG para marcadores.

Bom, voltando ao planeta virtual, o HTML ainda hoje é utilizada nos WEB Sites, porém não possuía uma definição clara de como usar seus elementos (mesma coisa coisa que TAG). Por isso, faz algum tempo, criaram uma evolução do HTML de nome xHTML. Páginas desenvolvidas em xHTML seguem as seguintes regras:

  1. Todas as tags têm que ser minúsculas. Ex.: <html><body><table><div><h1>
  2. Toda tag que abre fecha. Ex.: <div></div><ul></ul>
  3. Tags de linha (alguns que não possuem pares) fecha da seguinte forma: <tag />. Ex.: <hr /> <br />
  4. Aparência separada do conteúdo. Tchau <font> <table border=2> e outros.

Outra coisa mais importante dessa "filosofia" é saber o uso adequado de cada uma das TAGs. Digo isso porque quando o TABLELESS começou a tomar forma na web, desenvolvedores viciados em <table> praticamente trocaram de vício, sem investir em entender os conceitos. O que adianta o cara deixar a maconha de lado para tomar chá de cogumelo. Peço perdão se fui apelativo, mas é que modismo me deixa irado e foi o que acabou acontecendo. Quem segue a moda não conhece a filosofia, história e conceitos daquilo que bate no peito e diz com orgulho "Mano, não existe nada melhor que isso". Antes que eu seja mal interpretado, o TableLess foi um dos melhores movimentos que surgiu na internet. O problema foi muitos dos seu seguidores. Mas depois falo mais disso.

Hoje não estenderemos muito. Precisamos ter os conceitos fixo em nossa cabeça, antes de partimos para a prática. Por isso, caso tenha dúvida, algo a acrescentar ou, simplesmente, queira me xingar, não esqueça de comentar. Estarei feliz em respondê-los.

Quanto ao poder do Tableless, olhem o conteúdo do ZenGarden. Esse é apenas o conteúdo sem a aparência. Agora, vá no menu do lado direito e escolha um algum tema. Eu afirmo a vocês que o conteúdo continua o mesmo, mudado apenas a aparência. Se vocês repararem lá na URL que depois da primeira barra tem algo parecido com http://www.csszengarden.com/?cssfile=/213/213.css&page=0. Isso é uma variável que recebe o CSS a aplicar no conteúdo.

Temos muito assunto ainda pela frente. Mas um passo de cada vez.

Voem Alto Águias.

Mayck Diego Cipriano

quinta-feira, 17 de abril de 2008

Desenvolvimento em 3 Camadas - Parte 1

Olá Águias,

Estou aqui para cumprir uma das minhas promessas, a outra vai esperar um pouco mais.

No último post eu citei o site Zen Garden e acrescentei o comentário de que ele é o meu favorito. Antes que você entre nele e veja um layout comum e diga que estou louco, veja o que tenho pra falar e já voltamos a esse site.

Você que tem interesse em trabalhar com internet já deve ter ouvido falar sobre Desenvolvimento em 3 Camadas e se não ouviu, vai ouvir um dia - como agora.

Existem diferentes aplicações para esse termo. Na internet, ele padroniza uma separação entre Conteúdo, Aparência e Comportamento.

Desde os primórdios, as coisas nascem corretas e são tortas pelos homens, e com a internet não é diferente. Quando criada a "linguagem" HTML, a mesma tinha função definida para cada umas de suas TAGs, ou marcações. Os desenvolvedores não satisfeitos com isso, e com preguiça de aprender, foram distorcendo as funções das tags transformando o seu código fonte uma verdadeira salada. E, para piorar, algumas IDE's WYSIWYG acabaram surgindo para "sujar" ainda mais os fontes.

Porém, como sempre, um grupo que ainda se mantinha intacto a esses ataques, começou a revolucionar as coisas. Isso é um loop infinito, mas é assim que crescemos continuamente em conhecimento também.

Por curiosidade, pegue um site qualquer clique com o botão direito do mouse e vá View Source, ou Visualizar Código Fonte. Se você pegar um desses sites contaminados pela moda TABLE, procure contar quantas tags <table> ou <td> o mesmo possui. Faz algum tempo a eu li uma notícia sobre o redesigner da ESPN e a economia que isso lhe trouxe. Colocando em números, ela passou a economizar 700 Terabytes por ano, após passar o seu site para os Padrões WEB.

O desenvolvimento em 3 camadas permite que o site seja visível e funcional mesmo que o browser do cliente não tenha suporte a algum dos recursos utilizado na página. Vamos discorrer cada parte individualmente, para que os artigos não se tornem livros. Ainda hoje iremos falar sobre o Conteúdo.

Voem Alto Águias, cada vez mais alto.

Mayck Diego Cipriano

Melhorias no Blog

Olá Águias,
Estamos aqui para apresentar mais dois auxiliadores no nosso blog. Para você que já visitou o nosso blog, olhe novamente para a direita e verás dois novos "MENUS".
O primeiro, Para Saber Mais, será uma lista de link's úteis para aprendizado em diversas áreas. Só hoje eu postei quatro:
XNA Express Edition é uma ferramenta para desenvolvimento de jogos da Microsoft gratuita que trabalha juntamento com o Visual C# 2005 Express Edition.
Microsoft Robotics, uma IDE para trabalhar com robotica da Microsoft, também.
The Game Creators, ou simplesmente GDK, é outra ferrmenta para desenvolver jogos, que trabalha juntamento com Visual C++ 2008 Express Edition.
E por último, o meu preferido, o Zen Garden, que em resumo é um site que demonstra o poder do uso de css no layout de Web Sites. Entrarei em mais detalhes no meu próximo artigo, dessa vez eu prometo.
E o segundo auxiliar é o menu Tags, que irá ajudá-lo a localizar os seus artigos de acordo com os assuntos que você deseja.
Bom é isso pessoal, e até logo.
Mayck Diego Cipriano

quarta-feira, 16 de abril de 2008

Cálculo de Máscara de Sub-Redes

Oie Galera!!

Alguns dias atrás, estava eu a procura na sala, por alguém que soubesse como fazer cálculo de Sub-Redes, e por incrível que pareça, ninguém sabia!!!
Por isso estou aqui, depois de dias, tentado entender como se calculava, eu consegui...e agora vou passar para vocês!!!

Primeiro precisamos saber porque se deve calcular a Máscara de Sub-Redes, certo?!? Então vamos lá!!

O cálculo da máscara de sub-rede é feito para se dividir uma rede em porções de redes menores, e fazendo isso, acabasse por otimizando a rede, pois o tráfego será reduzido em cada sub-rede. Sem contar que dividindo a rede, em porções, poderá-se ter um controle maior na questão de colisões e inundação de Broadcast.

Para determinarmos qual será a mascará, precismos saber quantos hosts(Máquinas) teremos em cada sub-rede e também precisamos saber em quantas porções iremos dividir nossa rede!

Ex1. Iremos fazer o cálculo da máscara para um rede que terá 3 sub-redes e dentro de uma sub-rede teremos 30 hosts, dentro da segunda sub-rede 10 hosts e dentro da terceira sub-rede teremos 5 hosts.

Mas antes de realizarmos o cáculo precisamos tomar notas de mais alguns conceitos...

Existem 3 classes de redes:

Classe A: Onde os 8 primeiros bits do IP, é determinado o ID(qual rede pertence) e o resto determina a quantidade de hosts!
Classe B: Os 16 primeiros bists determinam o ID e o resto determina a quantidade de hosts!
Classe C: Os 24 primeiros bits determinam o ID e o resto determina a quantidade de hosts!

Vcs devem estar se perguntando, que bits de IP, são esses???

O número IP está divido em 4 octetos de 8 bits cada, totalizando 32 bits..
Ex. No caso de uma rede classe C, o 24 bits serão o endereço da Rede, os oitos serão os hosts!
Ex. 192.168.10.1

Voltando ao Ex1.
O número da mascará terá que sastifazer do menor número de hosts ao maior, por isso para calcularmos a mascará ultizaremos o maior nº de hosts, e no nosso caso são 30 hosts, afinal se uma sub-rede cabe 30 hosts, por que não caberia um número menor, podemos ultilizar uma máscara classe C!

Para acharmos quantos bits tomaremos emprestado da rede, devemos tranformar o nº 30 em potência.
Que seria: 2elevado a 5 = 32, com isso eu devo tomar emprestado da rede 5 bits!
Lembrando que a máscara padrão de um rede é 255.255.255.255 que em binários, ou nºs de bits é : 11111111.11111111.11111111.11111111
E eu não disse que iremos tomar emprestado os bits da rede, literalmente falando é isso mesmo...
E como calculamos iremos pegar emprestado 5 bits, certo?!? Mas antes preciso dizer mais uma coisa!!
Para prencher o que será host ultilizamos o nº 0 que será preenchido da esquerda para direita e para mostramos o que é rede usamos o nº 1 que será preenchido da direita para esquerda!!
Então a máscara ficará:
11111111.11111111.11111111.11100000
255.255.255.224....Mas por que 224???
O número 224, vem da reguá de bits, que deve ser imposta da seguinte forma: No ultimo octeto foram prenchidos 5 bits com 0, e restaram 3 bits com o valor de 1 que deve ser calculado da seguinte maneira:
A régua de bits pode ser descrita da seguinte forma: 128 64 32 16 8 4 2 1, onde cada número representa um bit! No caso do nosso exemplo, são o três primerios bits prenchidos com 1, então será a soma de 128+64+32=224, ou seja, onde eu tiver 1 eu somo!!

E é isso galera, a máscara que ultilizaremos para compor 3 sub-redes com 30,10 e 5 hosts respectivamente, será 255.255.255.224, podendo ser um IP de classe C, pois será o suficiente para para enquadrar o 30 hosts, os 10 e os 5 hosts!

Espero que todos entendam e qualquer dúvida, estarei aqui!!

E em breve estarei postando mais coisas sobre Redes, que é um mundo muito extenso!!!

terça-feira, 15 de abril de 2008

CCNA – A primeria certificação da pirâmede Cisco Systems


Oie Galera!

Meu primeiro Post, no nosso Blog, não é Super, Hiper Legal!! rs..

Bom, como poucos sabem!! Atualmente estou realizando o treinamento CCNA (Cisco Certified Network Associate) na Academia Cisco System, para que eu possa assim, após o término do curso realizar o exame, e conseguir minha certificação em CCNA.
A certificaçao CCNA é a primeira etapa para quem deseja se tornar um profissional renomeado CISCO, e é um exame um tanto quanto díficil comparado a outras certificações, mas é possível!!
Para alcançar essa desejável certificação é preciso horas, dias de muito estudo e muita confiança naquilo que se sabe sobre o treinamento.

O treinamento Cisco System está dividido em 4 módulos de 70hs cada, sendo eles :

Networking Basics
Routers and Routing Basics
Switching Basics and Intermediate Routing
WAN Technologies


Depois de realizar o treinamento e se você for uma pessoa esforçada, você poderá construir redes, trabalhar com soluções CISCO e aplicar as melhores soluções em redes e com certeza poderá ser um profissional certificado CCNA e fazer a diferença no mercado de Tecnologia.

CCNA é um ótimo começo para mim e para você que está querendo se tornar um profissional na área de Redes de Computadores.
Se você está interessado em realizar o treinamento, pode está falando comigo!!
E é isso Galerinha...Espero ter contribuido com algo, apresentando esse trreinamento para vcs e qualquer dúvida sobre Redes, Roteamento, eu estou aqui e quero muito ajudar!!
Ketty Terra

segunda-feira, 14 de abril de 2008

Visual Basic - Uma Primeira Impressão

Olá galera,

Desculpe a demora de minha postagem.

Já estou dando chute neste blog, rsrsrsrsrs

Que dificuldade pra colocar a minha pequena aula com imagens e tudo mais aqui neste blog.

Os recursos ainda são muito ruins.

Então decidi transformar em PDF, hospedar no http://www.adrive.com/ e postar o link pra vocês.

Ai vai o primeiro capítulo de uma série de postagens.

http://www.adrive.com/public/ce76a651911c686c95210cd9020f2c4d889d2e9fad3e148b4d5f2e7d74156974.html

Conto com a colaboração de todos trazendo idéias.

Fabio Silva Ferreira
Desenvolvendo Soluções

sexta-feira, 11 de abril de 2008

Chegandooo... Para ajudar!!!

Boa noite galera!

Sexta-feira, 20:27hrs, e eu aqui... Sem muito o que fazer, mas super ancioso! Amanhã começo meu tanto e esperado curso de MCDST (Microsoft Certified Desktop Support Technician). Graças a Deus agora vou poder ser alguém na vida. rs.

Estou aqui para "me dar" as boas-vindas ao blog. Quero poder ajudar o máximo a todos do nosso curso.

Agora vamos ao que interessa... Muitas pessoas desativam o modo de recuperação de sistema ou restauração do sistema, ou simplesmente não utilizam. Agora eu digo por mim, ELE FUNCIONA!!! Pelo menos nunca me deixou na mão. rs. Um exemplo vivo é de quando instalei o VistaMizer. No começo uma beleza, mas depois fui desinstalar e... Não saía de jeito nenhum. Mas como eu sempre utilizei o modo de restauração do Windows XP, deu tudo certo mais uma vez!
Achei um tutorial (para quem não sabe) de como iniciar o processo passo-a-passo.

http://www.baboo.com.br/absolutenm/templates/content.asp?articleid=11587&zoneid=178&resumo=

Acho muito válido isso e espero que utilizem de alguma forma.
Qualquer dúvida sobre Windows XP (que é o que tenho aprendido), me mandem por e-mail e estarei respondendo o mais breve possível.

Um abraço a todos e fiquem na Paz.

Leonardo Teixeira

quinta-feira, 10 de abril de 2008

The Hello World Collection

Bom Dia Turma.

Estava preparando um artigo no estilo Hello World para começarmos a parte prática do blog. No entanto, conversando com o Fábio, percebi que talvez não fosse o artigo mais estimulante para esse momento. O Hello World é um exemplo típico da maioria dos tutoriais de qualquer linguagem de programação. Por isso, para que ele não falte no nosso grupo, estou passando o link do The Hello World Collection, uma relação com exemplos deste exercício nas mais diversas linguagens. O endereço é esse:

http://www.roesler-ac.de/wolfram/hello.htm

São 365 exemplos em linguagens diferentes e mais 59 Hello World em idimoas distintos.
Outro link legal sobre este pequeno programa, é um site que satiriza a evolução do mesmo. É muito cômico a visão:

Espero que divirtam-se.

Mayck Diego Cipriano

terça-feira, 8 de abril de 2008

Ciência da Computação: Um Curso de Conceitos

Olá turma, bom dia.
Na dúvida do post inicial para nosso blog, vasculhei alguns assuntos que considero importante a todos e fiz uma releitura da biografia de Edsger Dijkstra. Para aqueles que não o conhecem, Dijkstra foi um dos maiores cientistas da computação que tivemos, ganhador do Turing Award de 1972 e detentor da seguinte frase:

"Ciência da computação tem tanto a ver com o computador como a Astronomia com o telescópio, a Biologia com o microscópio, ou a Química com os tubos de ensaio. A Ciência não estuda ferramentas, mas o que fazemos e o que descobrimos com elas."

Isso me faz recordar o questinamento de muitos quanto as matérias teóricas que temos em nosso curso. Sempre procurei defender tais matérias, mas nunca achei uma forma tão simples de explicar sua importância.

Não faz muito tempo, em um trabalho freelancer que estava fazendo de uma loja virtual, sentei-me para conversar com o outro programador que estava comigo para discutirmos o MER (Modelo de Entidade Relacional) de nossa base de dados, na parte de qualificações de usuário e vendedores. Apesar de ser um bom e dedicado programador, ele estava viciado em conceitos de Design Pattenrs que iria prejuticar o desempenho da aplicação só para reaproveitar o código. Pedi para que ele tivesse um pouco de calma e deixasse alguns modismos de lado. Revimos as tabelas novamente, e identificamos pontos que poderiam ser melhorados de forma que o projeto ficasse limpo e ao mesmo tempo eficiênte. Isso deve ser uma relação de custo benefício.

Num mundo onde só se fala em POO (Programação Orientada a Objetos), muitos desenvolvedores que, com pressa, foram logo a prática e tiveram conhecimento superficial do conceito, acabam que prejudicando o andamento do projeto, seja no desempenho ou no cumprimento do prazo.

Não só na programação existe esse problema de modismo, como em todas as áreas da informática. Ainda me lembro bem do Linux quando começou a tomar proporções em meados de 2000. Sem discussões sobre qual é o melhor. O fato é que, naquela época, muitos só sabiam ofender o Windows e enaltecer o Linux como o sistema revolucionário que acabaria com a Microsoft. No entanto, muitos deste apaixonados pelo Linux não foram muito longe do que alguns ls ou apt-get e, pela mudança de todo um conceito, desistiram ficando com a perversa Microsoft.

O que quero concluir com tudo isso. Mais importante que "mexer" no computador, é saber como funciona e porque é daquele jeito. Por isso matérias conceituais são tão importantes.

É claro que isso não deve nos limitar. Mas deve ser equilibrado o prático ao teórico. Por isso, no próximo artigo, começaremos a parte prática do nosso blog.

Esperamos que esse projeto dure além desses anos de graduação. Para isso acontecer, contamos com a sua particiapação.

Um grande abraço a todos e até o próximo artigo, o famoso "Hello World!!!".

Mayck Diego Cipriano