Revista PROGRAMAR - Ed 12 - 2008-01.pdf
(
5854 KB
)
Pobierz
editorial
índice
3
4
8
19
21
23
24
25
notícias
tema de capa
a programar
tecnologias
gnu/linux
internet
bluescreen
projectos
Programadores que
não sabem programar?
Coordenador Adjunto
desde a 4ª edição, é
actualmente o
Coordenador da
Revista Programar.
Entrou em 2007 no
curso de Engenharia
Informática e de
Computadores no IST.
Enquanto lia alguns dos
tópicos mais populares do
ano no que toca à
programação na popular
comunidade Digg
(www.digg.com), deparei-
me com um artigo intitulado
“Why Can’t Programmers...
program!”, em que se referia
que na maior parte das
entrevistas de emprego a programadores precedidas de recolha de currículos, a maior
parte dos entrevistados não superava algumas das mais básicas tarefas solvidas com
recurso a uma linguagem de programação, da ordem das que alguém que começou a
programar há dias tenta fazer.
Miguel Pais
equipa PROGRAMAR
administração
Rui Maia
David Pintassilgo
coordenador
Miguel Pais
Pode-se argumentar que bons programadores são desde logo assediados pelas empresas
enquanto tiram os seus cursos, não precisando deste género de entrevistas, mas mesmo
os que não conseguem tal sorte, não me parece, pelo menos em Portugal, que falhassem
em questões básicas sobre programação, como no exemplo dado no artigo original:
pedir ao programador que faça um output de todos os números de 1 a 100, excepto os
múltiplos de 3, que seriam imprimidos como “Fizz” e os de 5 que seriam “Buzz” (os
múltiplos de ambos como “FizzBuzz”).
coordenador adjunto
Joel Ramos
editor
Pedro Abreu
redacção
David Ferreira
Fábio Correia
João Rodrigues
João Alves
Miguel Araújo
Pedro Teixeira
Ou há algo de errado no mundo, ou há algo de errado nesta profissão. Será que com a
divulgação dos mais diversos tutoriais e snippets na web com a característica comum de
quererem dar a solução em vez de explicar como se chega a tal, a profissão de
programador começa a ter, dentro de si, uma larga percentagem de indivíduos que, na
mais fiel das denominações, seriam intitulados programadores do “desenrasque”? Mas
mais surpreendente do que haver tal percentagem é de facto ter programadores dessa
ordem empregados. Terá a programação já se especializado assim tanto que nem a
reprovação na concepção do mais básico algoritmo seja indicador de mau programador?
Será preocupante se sim, pois teremos muitos dos nossos serviços do dia a dia mantidos
e assegurados por programadores que numa possível situação inesperada não saberão
tomar as medidas adequadas para resolver o problema.
colaboradores
José Fontainhas
Daniel Correira
José Oliveira
Sérgio Santos
No entanto, o mundo emprega-os...
contacto
revistaprogramar
@portugal-a-programar.org
Queres ajudar a Revista PROGRAMAR?
Vê como na última página.
website
www.revista-programar.info
<2>
notícias
Novo MacBook Air
A Apple conseguiu fazer um portátil incrivelmente fino e ainda usar um ecrã de 13.3 polegadas e um teclado no
seu tamanho normal. Tem apenas menos de 2 cm de espessura na parte superior e 0.4 cm na parte inferior. Pesa
1,36 kg. O ecrã de 13.3'’ é em vidro, 1200 por 800 widescreen e com backlit LED. Este ecrã é do mesmo tamanho
do do Macbook.
As teclas do teclado do Air são como as do Macbook, na cor preta. A diferença está em que este é um teclado
retro-iluminado que se acende quando o sensor detecta a diminuição de luz. O trackpad também é especial -
integra vários movimentos multi-touch também utilizados no iPhone como o scroll, o pinch para o zoom, ou o
rotate.
Os únicos 3 conectores do Macbook Air estão escondidos. Basta deslizar uma espécie de tampinha e eles
surgem: o buraco dos headphones, do usb e micro-DVI. A saída micro-DVI suporta DVI, VGA, vídeo composto e
S-video. Até o carregador MagSafe teve que ser redesenhado e sofrer uma dieta para o Air.
Está também equipado com 2Gb de RAM incorporados, 80Gb de hard drive ou, por opção, uma drive de 64Gb
solid-state drive sem partes movíveis. O processador é agora uma versão mais pequena do Intel Core 2 Duo a
1.6GHz ou, opcionalmente, a 1.8GHz. Como todos os outros Macbook tem câmera iSight que agora é circular. A
bateria não é removível e tem uma durabilidade de até 5 horas.
O Macbook Air está previsto para entrega dentro de uma a duas semanas com o preço a rondar os 1800€ na
versão standard.
Oracle compra BEA Systems
Sun adquire MySQL AB
A Sun adquiriu a MySQL AB o que pode ter um impacto
grande no mercado de bases de dados.
Depois de uma primeira oferta sem sucesso, a
Oracle conseguiu agora ir ao encontro dos desejos
da administração da BEA Systems e chegar a um
preço que permitirá concretizar o negócio de
aquisição da empresa.
A empresa referiu que está apostar milhares de milhões
com o MySQL. Referiu também que vai oferecer um
novo suporte ao mercado do MySQL, mas também vai
dar suporte à comunidade com o objectivo de acelerar o
processo das empresas saírem do software proprietário.
O novo preço, de 8,5 mil milhões de dólares,
representa um prémio de 14 por cento face à
primeira oferta apresentada em Outubro passado e
resulta numa proposta de 19,3 dólares por acção,
contra os anteriores 17 dólares.
Segundo a Sun: “As pessoas do MySQL, desde os
empregados, utilizadores e patrocinadores - bem-vindos,
estamos contentes por nos juntar-mos convosco. Esta
aquisição significa o começo duma nova era na Internet.”
Apesar de ser um mercado onde a Oracle lidera
indiscutivelmente, o facto de ter a Sun por trás e ter um
modelo diferente pode chegar para começar a “assustar”
a Oracle.
A BEA Systems opera no mercado de middleware,
área onde a Oracle tem vindo a reforçar
competências, nomeadamente pela via das
aquisições e que pretende liderar a nível mundial. O
middleware é aliás o foco do projecto Fusion em que
a Oracle tem vindo a trabalhar para integrar o seu
software com o das empresas que tem vindo a
adquirir nos últimos anos, nomeadamente a
PeopleSoft.
Quanto à utilização hoje feita do MySQL em plataformas
Web, o impacto não será tão grande, já que o MySQL é
hoje o líder. Curiosamente, tanto nos grandes (Flickr,
Sapo, Google...) como nos pequenos.
<3>
tema de capa
exemplo, num programa em C todas as operações têm
acesso a todos os dados, e uma mudança num dos módulos
pode ter implicações em todo o programa. A programação
orientada a objectos alivia alguns desses problemas,
encapsulando cada uma das estruturas de dados num
objecto. O objecto também possui funções, chamadas em
POO de métodos, que permitem interagir com o objecto.
Programação Orientada
a Objectos em C#
POO – Características
A POO assenta em três conceitos base:
C# é uma linguagem de programação relativamente
recente, criada pela Microsoft, desenvolvida juntamente
com a arquitectura .NET. C# pronuncia-se ‘cê sharp’ e não
‘cê cardinal’, foi criada praticamente do zero para funcionar
na nova plataforma, sem preocupações de compatibilidade
com código de legado. Ultimamente, as empresas de
software têm apostado cada vez mais na plataforma .NET e
consequentemente no C#. Isto deriva do facto de ser uma
linguagem simples, orientada a objectos (como se irá ver
mais à frente), que tira partido dos serviços de segurança, da
gestão automática de memória e do vasto conjunto de
bibliotecas da plataforma .NET. A linguagem foi baseada
em Java e C++, tirando partido das melhores características
das duas, pelo que qualquer programador que esteja à
vontade nestas duas linguagens não vai sentir muitas
dificuldades em aprender C#. É portanto, uma linguagem
que permite desenvolver software com grande robustez,
respondendo aos exigentes requisitos das empresas.
- Encapsulamento de informação;
- Herança;
- Polimorfismo.
- Encapsulamento de informação
Um dos pontos fulcrais do POO é esconder as estruturas de
dados em objectos, aos quais são associados métodos que
manipulam essas estruturas. Para este processo o
programador tem de definir classes, que são um tipo
abstracto de dados ou uma família de dados. Cada classe
costuma ter as variáveis, método(s) construtor(es), métodos
que modificam ou devolvem o valor das variáveis. Antes de
entrar em detalhes sobre o que é cada um, é melhor tomar
em atenção o seguinte código:
Não é objectivo deste artigo ensinar e descrever as
características aprofundadas da linguagem C#, no entanto
pode-se dizer que tem uma sintaxe bastante parecida à do
Java. Tem as mesmas expressões de controlo de fluxo que
as linguagens derivadas do C, como por exemplo o if-else, o
while, o for, entre outros. Também possui bastantes
estruturas próprias da linguagem, mas esse é um assunto
que o leitor deverá aprofundar se não estiver à vontade.
class
Aluno
{
private
int
Numero;
//Número do
aluno
private
string
Nome;
//Nome do
aluno
private
string
NomeEscola;
//Nome
da escola
Esta pequena descrição da linguagem C# serviu de
introdução para o apoio ao tema central deste artigo, que é
a Programação Orientada a Objectos. Para que o leitor fique
a perceber melhor como funciona este paradigma vão ser
mostrados alguns exemplos de código C#.
public
Aluno
(
int
numeroAluno,
string
nomeAluno,
string
nomeEscola)
{
Numero = numeroAluno;
Nome = nomeAluno;
NomeEscola = nomeEscola;
}
Programação Estruturada vs Programação
Orientada a Objectos
public
void
MostraAluno
()
{
Console.
WriteLine
(
"O aluno
número {0} chama-se {1} e estuda na
escola {2}."
, Numero, Nome,
NomeEscola);
}
Hoje em dia, praticamente todo o software está a ser escrito
em linguagens de programação orientadas a objectos
(POO). Linguagens de programação estruturada como o C e
o Pascal estão a ser deixadas para trás, pois funcionam bem
para pequenos programas mas quando a complexidade
começa a aumentar podem surgir vários problemas. Por
<4>
tema de capa
Numero
está declarada como
private
e é necessário este
método que para entidades exteriores à classe possam
modificar o seu conteúdo. Desta forma, a seguinte
sequência:
public
int
DevolveNumero
()
{
return
Numero;
}
public
void
ModificaNumero
(
int
Numero)
{
this
.Numero = Numero;
}
}
aluno1.
ModificaNumero
(
20
);
aluno1.
MostraAluno
();
imprime a frase: “O aluno número 20 chama-se Filipe e
estuda na escola Escola XPTO.”
A classe
Aluno
possui três variáveis declaradas como
private
:
Numero
,
Nome
e
NomeEscola
. Isto significa que
só podem ser acedidas a partir da própria classe, ou seja, a
informação é escondida dentro da classe. Se estivesse
declarada como
public
podia ser acedida a partir de uma
classe externa. Pode-se observar a existência de um
construtor:
public Aluno()
. A sua função é a de criar uma
nova instância de uma classe, ou seja, cria um objecto dessa
classe. Também irá guardar a informação dos atributos que
são passados no construtor no interior da classe, tal como é
visto no código, já que as variáveis da classe tomam o valor
das passadas no construtor. Para criar o objecto do tipo
Aluno
basta fazer:
De notar que no método que modifica a idade do aluno foi
usado a cláusula
this
, que significa o próprio objecto. Como
a variável da classe e a passada por referência no método
tinham o mesmo nome foi necessário indicar que quem
tomava o novo valor era a variável do objecto. É de notar
que as outras classes podem chamar estes métodos porque
estão declarados como
public
; caso estivessem declarados
como
private
os métodos só podiam ser acedidos a partir
da própria classe.
- Herança
Esta é uma das características mais visíveis e com mais uso
quando se desenvolve uma aplicação usando POO. Para
compreender melhor o conceito de Herança, vai-se tomar
em conta a classe Aluno anteriormente descrita. Imagine-se,
agora, que é necessário criar mais uma classe para os alunos
que são trabalhadores estudantes e que essa classe apenas
vai ter mais um campo (o nome da empresa onde trabalha)
que a classe Aluno. Será que faz sentido estar a criar uma
classe AlunoTE que repita os mesmos atributos que a classe
Aluno? Afinal de contas, um trabalhador estudante é um
aluno, e como tal possui todas as características de um aluno
normal. Assim surge o conceito de herança, ou seja, é
possível criar uma nova classe que derive de outra. Contudo
nem sempre o conceito de herança é bem utilizado. Apenas
se deve usar quando uma classe é uma especialização da
outra, isto é, quando possui todos os elementos que a outra
possui mais alguns, sejam estes métodos ou dados. É usual
chamar à classe geral de superclasse ou de classe base,
enquanto as que derivam destas são chamadas de
subclasses.
Aluno aluno1 =
new
Aluno
(
10
, “Filipe”,
“Escola XPTO”);
Depois existem três métodos. O primeiro,
MostraAluno()
,
quando é chamado imprime a frase com os dados do aluno,
ou seja, ao invocar
aluno1.MostraAluno()
vai imprimir a
seguinte frase:
“O aluno número 10 chama-se Filipe e estuda na escola
Escola XPTO.”
O método
DevolveNumero()
é chamado sempre que seja
necessário saber o número do aluno. Como a variável
Numero
da classe
Aluno
está declarada como
private
, é
necessário criar esse método para saber o seu valor. A
seguinte invocação:
Console.
WriteLine
(“O aluno tem o
número {
0
}.”, aluno1.
DevolveNumero
())
resulta na frase: “O aluno tem o número 10.”
O último método,
ModificaNumero(int Numero)
, é
usado para modificar o número do aluno, já que a variável
<5>
Plik z chomika:
denissonjose
Inne pliki z tego folderu:
Revista PROGRAMAR - Ed 10 - 2007-09.pdf
(9832 KB)
Revista PROGRAMAR - Ed 07 - 2007-03.pdf
(7863 KB)
Revista PROGRAMAR - Ed 08 - 2007-05.pdf
(6799 KB)
Revista PROGRAMAR - Ed 09 - 2007-07.pdf
(7921 KB)
Revista PROGRAMAR - Ed 01 - 2006-03.pdf
(2494 KB)
Inne foldery tego chomika:
Aventuras na História - Ed. 180 - Maio 2018
Aventuras na História - Ed. 177 - Fevereiro 2018
Aventuras na História - Ed. 178 - Março 2018
Aventuras na História - Ed. 183 a 185 - Agosto a Outubro 2018 [Pack]
Aventuras na História - Ed. 184 - Setembro 2018
Zgłoś jeśli
naruszono regulamin