Académique Documents
Professionnel Documents
Culture Documents
2
EQUIPA PROGRAMAR
try: keepUpWork: Except Error: print again break
Tentamos Ousamos falhar, tentamos de novo E no final do dia, tentamos
outra vez!
Esta semana vi um cartoon engraado sobre o desenvolvimento de
aplicaes open-source! Achei particularmente caricato, pelas semelhanas do
cartoon com esta nossa e vossa revista. Vou tentar codificar o cartoon em palavras,
apesar do sucesso ser pouco provvel! No cartoon aparecia como ttulo: O que as
pessoas pensam sobre como as aplicaes open-source so feitas e tinha vrios
grupos de pessoas, a trabalharem simultaneamente em ideias a construir algo, a
testar a construir, a idealizar E abaixo tinha uma segunda quadricula intitulada O
que realmente acontece, onde se via um sujeito solitrio, com aspecto de cansado
com o balo de fala onde se lia let me just close one more ticket before sleep, e via-
se no fundo um relgio onde as horas marcavam perto de 2h da manh. Era mais ou
menos isto. Recomendo verem a imagem original na web, pois bem mais ilustrativa
e engraada.
De facto tantos projectos so comeados por um monte de gente e mantidos
por um idealista que fica acordado todas as noites at altas horas, apenas para
manter o projecto vivo. De certa forma com este projecto que a revista,
exactamente isso que acontece! As pessoas pensam algo, mas a realidade
ligeiramente diferente! Caricata coincidncia!
Cada noite passada a programar faz-me pensar na nostalgia de outros
tempos em que programar era mais desafio que trabalho, era mais prazer que
ocupao, era mais paixo que dever Era como escrever num newsgroup a
resposta a algo, ou partilhar aquela coisa que a gente tinha acabado de fazer,
apesar das horas j irem bem avanadas e o dia j se fizesse notar, por entre as
janelas fechadas.
Toda esta nostalgia me fez lembrar o gosto que pessoalmente tenho em editar esta
revista. As horas que ela consome a todos ns que a fazemos e o gosto que temos
em faz-lo. As vezes que pensamos que no vamos conseguir, mas continuamos
em frente e almejamos mais! Porque na realidade somos programadores! Isso de
alguma forma est no nosso ADN.
Por todas estas razes, pela nostalgia e o gosto de trabalhar nesta edio
prometemos continuar o trabalho, aprendendo, superando, tentando de novo!
"Porque ns, programadores, somos gente de ideias, e no desistimos!
Por isso e por muito mais Programar ontem, hoje e amanh!
At prxima edio.
Antnio Santos
A revista PROGRAMAR um projecto voluntrio sem fins lucrativos. Todos os artigos so da responsabilidade dos autores, no
podendo a revista ou a comunidade ser responsvel por alguma impreciso ou erro.
Para qualquer dvida ou esclarecimento poder sempre contactar-nos.
Coordenador
Antnio Pedro Cunha Santos
Editor
Antnio Pedro Cunha Santos
Design
Srgio Alves
Twitter: @scorpion_blood
Redaco
Fbio Pinho
Fernando Martins
Igor Nunes
Joo Silva
Lus Soares
Nuno Santos
Paulo Morgado
Sara Silva
Staff
Antnio Santos
Antnio Silva
Jorge Paulino
Rita Peres
Rui Gonalves
Contacto
revistaprogramar@portugal-a-
programar.org
Website
http://www.revista-programar.info
ISSN
1 647-071 0
NDICE
3
TEMA DE CAPA
Estendendo uma aplicao criada no App Studio da Microsoft (Sara Silva)
A PROGRAMAR
COLUNAS
EVENTOS
27 de Maio a 26 de Junho - OpenDays Engenharia Informtica IPVC
13 a 14 de Outubro RubyConf
Para mais informaes/eventos: http://bit.ly/PAP_Eventos. Divulga os teus eventos para o email eventos@portugal-a-programar.pt
JSF - Parte 3 (Managed beans) (Lus Soares)
Pascal Array de argumentos (Igor Nunes)
Criar uma aplicao para Android com mapa (Joo Silva )
C# CRUD (Create, Read, Update & Delete) (Fbio Pinho)
C# - Novas Funcionalidades Do C# 6.0 Anteviso De Abril De 2014 (Paulo Morgado)
Visual(NOT)Basic - Mtodos de extenso o que preciso, como quero (Srgio Ribeiro)
CoreDump - Programador ^ Gestor (Fernando Martins)
6
13
COMUNIDADES
Comunidade NetPonto Criando aplicaes Windows Phone 8.1 e Windows 8.1 usando o App Studio da Microsoft
(Sara Silva)
46
49
34
15
19
ANLISES
Segurana em Redes Informticas (4. Ed. Aumentada) (David Sopas)
Estruturas de Dados e Algoritmos em C (Nuno Santos)
NO CODE
O Windows Phone 8.1 e a atualizao do Windows 8.1 (Sara Silva) 55
26
47
40
43
NOTICIAS
4
Dar Voz ao AVC" aplicao inform-
tica para ajuda a pessoas com AVC
Dar Voz ao AVC" uma aplicao de software recentemente
desenvolvida por Fethi Houita, ex-aluno do curso de Engenha-
ria Informtica [LEInf ] da Escola Superior de Tecnologia e
Gesto do Instituto Politcnico de Viana do Castelo [ESTG-
IPVC].
A aplicao (app) visa poder dotar as pessoas que sofreram
AVC (e ficaram afsicas), de uma ferramenta para poder ex-
pressar sentimentos, emoes, e desejos simples. uma
aplicao que emula parte do trabalho do terapeuta da Fala,
com elementos de comunicao alternativa que, em vez de
estarem no papel, so dotados de maior interactividade e tm
som, comportando mais vantagens.
Nem todas as pessoas que sofreram AVC e tm afasia pode-
ro usar a app, porque necessitam que a compreenso esteja
intacta e de possuir recursos intelectuais e cognitivos para
utilizar o tablet e a app.
Para Jorge Ribeiro, atual coordenador do curso de Engenha-
ria Informtica, este e outros projetos de ex-alunos refletem o
conhecimento e as competncias adquiridas ao longo do cur-
so, possibilitando-lhes reunir um conjunto de competncias e
know-how na rea da Engenharia Informtica. Reflete tam-
bm o facto de permitir aos alunos estarem preparados para
saber fazer e por as mos na massa, refletindo-se o seu
desempenho na elevada taxa de empregabilidade e na boa
reputao do curso por parte dos empregadores, quer a nvel
regional, nacional e internacional.
Adicionalmente, este mais um exemplo de sucesso em em-
preendedorismo.
Link da aplicao: https://play.google.com/store/apps/details?
id=darvozao.avc
Link para a pgina de Fethi Houita, ex-Aluno ESTG-IPVC:
fr.linkedin.com/pub/fethi-houita/4b/627/185
Fonte IPVC.pt
Portugus garante lugar no muro da
fama da Adobe
Um jovem de Leiria garantiu um lugar no "muro da fama" dos
caadores de bugs da Adobe, com a descoberta de uma falha
que permitia injetar cdigo malicioso.
Manuel Sousa, 17 anos, garantiu um lugar na lista de progra-
madores que descobrem bugs e falhas de segurana nas
solues da Adobe. A entrada nesta pgina que disntingue
descobridores de falhas ocorreu h trs semanas, depois de
alertar os responsveis da Adobe para uma falha que poderia
ser usada para ataques de Cross Site Scripting (XSS).
A falha permitia injetar cdigo-fonte na pgina, precisamente
naqueles nmeros de navegao que costuma estar no fundo
de algumas pginas de procura, para avanar de uma pgina
para as seguintes, explica Manuel Sousa num e-mail envia-
do para a Exame Informtica.
Os ataques de XSS distinguem-se por permitirem a insero
de cdigos que alteram parte ou a totalidade de um site. Este
tipo de falhas pode ser usada para alterar a aparncia do site,
ou, numa variante mais comum e grave, para inserir mdulos
que aparentam pertencer ao site legtimo, mas que na verda-
de encaminham os internautas para um endereo malicioso,
que poder ser usado para suportar estratagemas que desvi-
am dados confidenciais.
Segundo Manuel Sousa, a falha afetava todo o domnio ado-
be.com, no sendo necessrio o utilizador estar registado no
site da companhia que produz o Photoshop para se tornar
vtima de um hacker que tentasse explorar a vulnerabilidade
O jovem de Leiria descobriu a falha ao cabo de uma semana
de anlise ao site principal da Adobe. A companhia demorou
cerca de um ms a remendar a vulnerabilidade reconhecen-
do o mrito do jovem finalista do secundrio com a atribuio
de um lugar no muro da fama dos caadores de bugs.
No a primeira vez que Manuel Sousa garante uma entrada
direta para um dos muros da fama dos caadores de bugs: no
incio do ano, o jovem de 17 anos recebeu idntica distino
da Google s que dessa vez a descoberta de uma falha
XSS valeu-lhe tambm um prmio de 3000 dlares.
S costumo realizar testes em sites que tm programas j
estabelecidos para ajudar os "caadores" a reportarem falhas.
Algumas dessas empresas oferecem prmios monetrios,
distines nos muros da fama, ou apenas brindes, explica.
Alm da Google e da Adobe, Manuel Sousa tambm se distin-
guiu com a descoberta de uma falha no Portal das Finanas
que permitia ataques de phishing e o consequente desvio de
dados dos internautas.
Fonte exameinformatica.sapo.pt
Blog: http://manuel-sousa.blogspot.pt/
TEMA DE CAPA
Estendendo uma aplicao criada no App Studio da Microsoft
TEMA DA CAPA
6
Este artigo tem como objetivo explicar como extender uma
aplicao que foi inicialmente gerada pelo App Studio da
Microsoft.
No meu ltimo artigo, Criando aplicaes Windows Phone
8.1 e Windows 8.1 usando o App Studio da Microsoft, foi
apresentado o servio da App Studio, os vrios tipos de
templates para criar aplicaes, as vrias fases do
desenvolvimento da aplicao no servio e por fim a gerao
dos pacotes e a obteno do cdigo.
Atualmente o App Studio no tem suporte para feed do
Twitter, no entanto possvel extender a aplicao para
suportar esta funcionalidade, ora vejamos como o podemos
fazer.
Na aplicao do Contoso Ltd, criada a partir de um template
fornecido pelo App Studio temos vrias seces:
About us uma seco do tipo HTML
Catalog uma seco do tipo coleo dinmica
Team uma seco do tipo coleo dinmica
News uma seco do tipo Bing
Contact us uma seco do tipo Menu, que contm
aes de menus.
Estendendo uma aplicao criada no App Studio da Microsoft
Para adicionar o feed do Twitter, iremos ter uma nova
sesso chamada Twitter. Esta seco pode ser criada no
App Studio usando uma das opes de seces avanadas,
a Collection.
Ao criar a seco do tipo Collection, temos que definir o
Nome, escolher a opo Dynamic resources data in the
cloud e em seguida clicar em Add default columns (ir criar
toda a estrutura de dados necessria para a coleo, caso o
utilizador pretenda criar a sua prpria estrutura deve usar a
opo Create new).
TEMA DA CAPA
7
O resultado ser o seguinte,
Depois de confirmar, iremos ter mais uma seo na pgina
de contedos
Como referi no meu artigo anterior, podemos alterar a ordem
das sees, fazendo arrastar e largar (Drag & Drop), desta
forma iremos ter
De seguida, devemos editar a seo Twitter, para definir
uma entrada de dados para teste e para definir os Bindings
do DataTemplates.
Comecemos por definir os Bindings, primeiro da pgina
principal:
Em seguida da pgina de detalhe:
Por fim vamos criar uma entrada falsa, no separador de da-
dos:
possvel importar dados de um ficheiro CSV ou inserir ma-
nualmente, neste caso, apenas foi criada uma entrada ma-
nualmente.
Neste momento, estamos prontos para gerar novos pacotes
e com isto obter nova verso do cdigo fonte, para assim
continuar o desenvolvimento no Visual Studio 2013.
No Visual Studio, o projeto ir ter a seguinte estrutura:
AppStudio.Windows projeto para a aplicao Win-
dows 8.1
AppStudio.WindowsPhone projeto para a aplicao
Windows Phone 8.1
EXTENDENDO UMA APLICAO CRIADA NO APP STUDIO DA MICROSOFT
TEMA DA CAPA
8
AppStudio.Shared projeto partilhado pelas duas
aplicaes
AppStudio.BackgroundAgent projeto que d suporte
a background agents
AppStudio.Data projeto que consiste numa portable
class library e contm toda a informao sobre a es-
trutura de dados usadas nas duas aplicaes e con-
tm ainda os providers de dados (facebook, fe-
eds,)
O resultado do deploy da aplicao no Windows Phone
(seco do Twitter)
Para alterar esta pgina, para que use dados reais do Twitter
necessrio fazer algumas alteraes no projecto AppStu-
dio.Data
EXTENDENDO UMA APLICAO CRIADA NO APP STUDIO DA MICROSOFT
TEMA DA CAPA
9
return data;
}
Em TwitterDataSource, devemos alterar o mtodo LoadData
para:
Em vez de usar o ServiceDataProvider devemos criar o Twit-
terDataProvider que ser
Para obter as chaves
dever aceder ao dev.twitter.com e criar uma aplicao e em
seguida obter as chaves.
necessrio instalar o pacote do Nuget linqtoTwitter no pro-
jeto AppStudio.Data, mas como este projeto uma Portable
Class Library com targets para Windows Phone 8.1 e Win-
dows 8.1, a instalao do pacote ir falhar. Para dar a volta a
este problema, uma vez que ainda no existe uma atualiza-
o, deve-se instalar o pacote no projecto AppStu-
dio.Windows e depois no projecto AppStudio.Data, deve-se
fazer Add Reference>Browser e em seguida procurar pela
pasta que contm o pacote instalado, que ser algo do gne-
ro
App\packages\linqtotwitter.3.0.2\lib\portable-
win8+net45+wp8 e deve-se selecionar a dll LinqToTwit-
terPcl.dll e assim o projeto AppStudio.Data ir ter a refern-
cia do LinToTwitterPcl.
Depois de correr a aplicao iremos ter o seguinte resultado,
para Windows Phone 8.1
Seco da pgina principal Pgina de detalhes
A verso Windows 8.1 tem o seguinte aspeto
public async Task<IEnumerable<TwitterSchema>>
LoadData()
{
if (_data == null)
{
try
{
var serviceDataProvider =
new TwitterDataProvider();
_data = await serviceDataProvider.Load();
}
catch (Exception ex)
{
AppLogs.WriteError
("TwitterDataSource.LoadData",
ex.ToString());
}
}
return _data;
}
public class TwitterDataProvider
{
TwitterContext twitterCtx;
public TwitterDataProvider()
{
var auth = new SingleUserAuthorizer()
{
CredentialStore =
new SingleUserInMemoryCredentialStore
{
ConsumerKey = ConsumerKey,
ConsumerSecret =
ConsumerSecret,
AccessToken = AccessToken,
AccessTokenSecret =
AccessTokenSecret
}
};
twitterCtx = new TwitterContext(auth);
}
public async Task
<IEnumerable<TwitterSchema>> Load()
{
var searchresults = await (from tweet
in twitterCtx.Search where tweet.Type
== SearchType.Search && tweet.Query ==
"#contoso" && tweet.Count == 100
select tweet).SingleOrDefaultAsync();
var data = new List<TwitterSchema>();
foreach (var status in
searchresults.Statuses)
{
data.Add(new TwitterSchema()
{
Title = status.User.Name,
Description = status.Text,
ImageUrl =
status.User.ProfileImageUrl,
Subtitle =
status.CreatedAt.ToString("t")
});
}
const string ConsumerKey = ".";
const string ConsumerSecret = "";
const string AccessToken = " ";
const string AccessTokenSecret = "";
EXTENDENDO UMA APLICAO CRIADA NO APP STUDIO DA MICROSOFT
TEMA DA CAPA
10
Como se pode observar o aspeto da interface para a seco
do Twitter, no muito agradvel e como tal podemos alterar
o cdigo XAML para assim obtermos um resultado melhor.
Outro aspeto que podemos alterar o facto de ao clicar no
item navegamos para a pgina de detalhe, o que neste caso
no faz muito sentido porque ir apresentar a mesma infor-
mao que na pgina inicial, por tanto iremos remover.
No projeto de cada aplicao, podemos encontrar uma pasta
chamada Views que contm uma pasta chamada DataTem-
plates, que por sua vez contm o dicionrio de recursos para
cada seco. Se abrirmos o ficheiro TwitterViews, encontra-
mos o DataTemplate TwitterItem que representa cada item
do feed do Twitter.
Para a verso do Windows Phone 8.1, podemos alterar
Para a verso de Windows 8.1, podemos alterar
<DataTemplate x:Key="TwitterList">
<Grid>
<ListView ItemsSource="{Binding
Items}" SelectedItem="{Binding
NavigationItem, Mode=TwoWay}"
SelectionMode="None"
IsSwipeEnabled="False"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
ItemTemplate="{StaticResource
TwitterItem}">
</ListView>
<ProgressBar Width="380" Height="40"
Foreground="White" VerticalAlignment="Top"
IsIndeterminate="True" Visibility="{Binding
ProgressBarVisibility}" />
</Grid>
</DataTemplate>
<!-- ListPhotoLeftDescription Item -->
<DataTemplate x:Key="TwitterItem">
<Grid Width="380">
<Grid.RowDefinitions>
<RowDefinition Height="80"/>
<RowDefinition Height="60"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Row="0" Grid.Column="0"
Margin="0, 8" Source="{Binding ImageUrl}"
MaxHeight="50" MaxWidth="50"
Stretch="UniformToFill"
VerticalAlignment="Center" />
<StackPanel Grid.Row="0"
Grid.Column="1">
<TextBlock Margin="16, 8, 5, 10"
Style="{StaticResource ItemHeaderWrapText}"
MaxHeight="50" VerticalAlignment="Center"
Text="{Binding Title,
Converter={StaticResource TextPlainConverter},
ConverterParameter=140}" />
<TextBlock Margin="16, 8, 5, 10"
Style="{StaticResource ItemSubheaderText}"
MaxHeight="110" VerticalAlignment="Top"
Text="{Binding Subtitle}" />
</StackPanel>
<TextBlock Grid.Row="1"
Grid.ColumnSpan="2" Margin="0, 0, 5, 0"
Style="{StaticResource ItemSmallText}"
MaxHeight="200" VerticalAlignment="Top"
Text="{Binding Description}" />
</Grid>
</DataTemplate>
<DataTemplate x:Key="TwitterListSnapped">
<Grid Width="230">
<GridView ItemsSource="{Binding Pre-
viewItems}" SelectedItem="{Binding NavigationItem,
Mode=TwoWay}"
S e l e c t i o n M o d e = " N o n e "
I s S w i p e E n a b l e d = " F a l s e " S c r o l l V i e w -
er.VerticalScrollBarVisibility="Hidden"
ItemTemplate="{StaticResource
TwitterItemSnapped}">
</GridView>
<ProgressBar Height="40" Fore-
ground="White" VerticalAlignment="Top" IsIndeter-
minate="True" Visibility="{Binding ProgressBarVis-
ibility}" />
</Grid>
</DataTemplate>
<!-- ListPhotoLeftDescription Item -->
<DataTemplate x:Key="TwitterItem">
<Grid Width="480" Height="240">
<Grid.RowDefinitions>
<RowDefinition Height="0"/>
<RowDefinition Height="130"/>
<RowDefinition Height="160"/>
EXTENDENDO UMA APLICAO CRIADA NO APP STUDIO DA MICROSOFT
TEMA DA CAPA
11
E assim obtemos um novo aspeto da aplicao, para Win-
dows Phone 8.1 iremos ter:
E para Windows 8.1 iremos ter
Em concluso, conclui-se que muito simples extender a
aplicao gerada pelo App Studio, no entanto no possvel
fazer o upload desta verso para o App Studio, todas as
alteraes feitas na aplicao no App Studio implicam um
merge entre verses.
EXTENDENDO UMA APLICAO CRIADA NO APP STUDIO DA MICROSOFT
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Row="1" Grid.Column="0" Margin="0, 8"
Source="{Binding ImageUrl, Converter=
{StaticResource ThumbnailConverter},
ConverterParameter=220}" MaxHeight="110"
Stretch="UniformToFill"
VerticalAlignment="Top" />
<StackPanel Grid.Row="1"
Grid.Column="1" Orientation="Vertical">
<TextBlock Margin="16, 0, 10,
0" Style="{StaticResource ItemHeaderWrapText}"
MaxHeight="50"
VerticalAlignment="Center" Text="{Binding Title,
Converter={StaticResource TextPlainConverter},
ConverterParameter=140}" />
<TextBlock Margin="16, 8, 10,
10" Style="{StaticResource ItemSubheaderText}"
MaxHeight="110"
VerticalAlignment="Top" Text="{Binding Subtitle,
Converter={StaticResource TextPlainConverter},
ConverterParameter=280}" />
</StackPanel>
<TextBlock Grid.Row="2"
Grid.ColumnSpan="2" Margin="0, 0, 10, 0"
Style="{StaticResource ItemSmallText}"
MaxHeight="60"
VerticalAlignment="Top"
Text="{Binding Description}" />
</Grid>
</DataTemplate>
AUTOR
Escrito Por Sara Silva
Licenciada em Matemtica Especialidade em Computao, pela Universidade de Coimbra e Microsoft Certified Profissio-
nal Developer. Atualmente o seu foco de desenvolvimento incide em Windows Phone e Windows 8 Store Apps. O seu Blog
www.saramgsilva.com e o twitter @saramgsilva.
A PROGRAMAR
JSF - Parte 3 (Managed beans)
Pascal array de argumentos
Criar uma aplicao para Android com mapa
C# CRUD (Create, Read, Update & Delete)
A PROGRAMAR
13
Este o 3 artigo da srie. Assume portanto que j tem um
projeto de exemplo JSF a funcionar. altura de fazer algu-
mas experincias, nomeadamente criar um backing bean.
Um backing bean uma classe Java que responde a pedi-
dos e gere o estado dos componentes JSF. uma espcie
de servlet de alto nvel. Entre vrias outras funes, faz a
ligao camada dos servios que pode ser uma BD, um
servidor remoto ou outro. Uma aplicao pode conter mlti-
plos backing beans.
Os backing beans mais conhecidos em Java so os
managed beans e os named beans (ou CDI beans). Os
primeiros so mais comuns; os segundos mais flexveis. Os
conceitos so muito semelhantes. Usaremos os primeiros
devido facilidade de utilizao e porque o Tomcat apenas
suporta esses.
Um managed bean representa o Controller no padro MVC.
Caracteriza-se consoante o seu mbito (scope). Os mais
importantes so:
Application: o bean persiste na aplicao estando dispon-
vel para todas as sesses;
Session: o bean existe por utilizador; til para dados refe-
rentes ao que utilizador est a fazer durante um periodo de
utilizao;
View: semelhante ao session, mas por tab; como que
se cada tab do browser representasse uma sesso diferen-
te;
Request: a nica gesto de estado que existe dura apenas
o pedido e por isso o mais leve.
Para exemplificar como funciona um managed bean crie-
mos um. Para efeitos de aprendizagem, comecemos com um
bean de sesso, o que apresenta menos desafios. Para tal,
aps ter o projeto JSF (criado no artigo anterior) aberto:
Clique com o boto direito do rato em Source Packa-
ges e faa New > Java Class:
2. D-lhe o nome de ClientesBean e coloque-o no packa-
ge pt.revista.programar.
3. O bean criado estar automaticamente disponvel para
ser usado nos XHTML sob a forma de
JSF - Parte 3 (Managed beans)
clientesBean (tcnica conhecida como convention over
configuration). Para tal, anote a classe com as anotaes
@ManagedBean e @SessionScoped (disponveis em ja-
vax.faces.bean).
Agora, crie uma propriedade com getter/setter chama-
da nome. Ficar com o seguinte cdigo:
Agora, na pasta Web Pages, v a index.html e
dentro de h:body coloque o seguinte cdigo:
Tal cdigo ir comunicar com o managed bean criado anteri-
ormente. O boto ir submeter o formulrio.
6. Agora precisamos da pgina para onde seremos redi-
recionados. Teremos de cham-la de
resultado.xhtml para que a action no boto anterior
seja respeitada.Para criar est pgina carregue com o
boto direito sobre Web Pages > New > Other >
Web > XHTML > Next; d-lhe o nome resultado
e faa Finish.
7. Apague todo o contedo e copie o contedo de
index.html.
8. Vamos apenas substituir o contedo de h:body de
maneira a ficar:
package pt.revista.programar;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class ClientesBean implements Serializable
{
String nome;
public string getNome(){
return nome;
}
Public void setNome(String nome) {
this.nome = nome;
}
}
<h:form>
<h:inputText Value="#{clientsBean.nome}" />
<h:commandButton Acton="resultado
"value="enviar" />
</h:form>
<h:body>
<h:outputText value="Boa tarde #
{clientesBean.nome}" />
</h:body>
A PROGRAMAR
14
9. Agora est tudo em ordem. J temos uma pgina que
recebe o seu nome, um bean que o guarda e uma pgi-
na que o exibe. Para ver tudo em ao, clique com o
boto direito no projeto e faa Run.
O JSF um mundo construdo em cima das tecnologias que j
conhece (HTTP, servlets, JavaScript, etc.), pelo que por vezes
estranho que seja to alto nvel. Aps alguns anos a us-lo
posso garantir que depois do perodo inicial de aprendizagem,
compensa: a velocidade de desenvolvimento aumenta conside-
ravelmente e damos por ns a fazer coisas muito complexas
em muito pouco tempo.
H que assinalar tambm que, ao usar JSF, devemos tentar
sempre conhecer e fazer uso das suas funcionalidades.
Isto porque provvel que ele resolva o nosso problema e
no seja preciso escrever cdigo especfico. Seja chamadas
Ajax, personalizao do componente, utilizao da query
string, entre outros, o JSF j pensou nisso. Se precisamos
de um componente mais avanado, existem as bibliotecas
de componentes (ICEfaces, RichFaces, PrimeFaces), que
trazem componentes muito ricos, flexveis e funcionais.
improvvel que tenhamos de recorrer a cdigo JavaScript
para operaes comuns; a ideia de usar uma framework
server-side mesmo essa: ser tudo personalizvel por via
dos atributos XHTML dos componentes.
Espero que tenha gostado do artigo. Qualquer dvida, sinta-
se vontade para me contactar. Consoante o interesse da
comunidade poderei escrever mais artigos sobre o tema,
nomeadamente sobre a integrao e utilizao do PrimeFa-
ces.
JSF - PARTE 3 (MANAGED BEANS)
AUTOR
Escrito por Lus Soares
Formado em Engenharia Informtica e de Computadores no Instituto Superior Tcnico (Licenciatura e Mestrado). Sou web
developer, _tendo j colaborado em projetos de telecomunicaes e dos _media. Gosto de linguagens de alto nvel, de reutili-
zar cdigo, de refactoring para simplificar. Gosto de ensinar. Escrevi um livro sobre jQuery (goo.gl/nw2Zb).
Os meus contactos esto em luissoares.com para qualquer dvida sobre o artigo ou outra informao.
() uma espcie
de servlet de alto n-
vel. Entre vrias ou-
tras funes, faz a liga-
o camada dos ser-
vios que pode ser
uma BD, um servidor
remoto ou outro ()Um
managed bean repre-
senta o Controller no
padro MVC ()
A PROGRAMAR
15
A definio da linguagem Pascal estabelece desde os seus
primrdios regras bastante rgidas acerca da passagem de
argumentos a uma funo ou procedimento. No seu conjun-
to, uma das consequncias destas regras a impossibilida-
de de se implementarem funes varidicas, isto , fun-
es com um nmero indefinido de argumentos s quais
podemos fornecer virtualmente uma infinidade de argumen-
tos, no havendo a restrio de ser possvel passar apenas
N argumentos em determinada ordem e com determinados
tipos.
Vrias linguagens permitem a implementao de funes
varidicas, como por exemplo C e at Haskell (com recurso
a alguns truques que envolvem aspectos avanados dos
tipos de dados).
O facto de Pascal no permitir a implementao de funes
varidicas pode suscitar algumas dvidas. Mtodos standard
que formam a base do Pascal so aparentemente varidicos,
como o writeln e o readln. No entanto, estes mtodos no
so exactamente funes ou procedimentos verdadeiros. A
sua implementao no definida em termos da linguagem
Pascal (que, como foi dito, no permite este tipo de defini-
es); so apenas instrues que o compilador trata de for-
ma especial para nos permitir utiliz-las como se fossem
varidicas.
Todavia, o rio no encontra a sua foz neste ponto. Apesar de
esta funcionalidade no ser permitida, existe uma forma de a
simular. Compiladores e dialectos mais recentes, como o
Delphi e o Free Pascal, permitem a passagem de arrays de
argumentos, a qual tem por princpio a passagem de arrays
abertos, conceito que ser brevemente revisto.
Todo o cdigo presente neste artigo foi compilado recorren-
do ao Free Pascal Compiler, verso 2.6.2, em ambiente Win-
dows
E
d
i
o
-
F
e
v
e
r
e
i
r
o
2
0
1
3
4
1
E
d
i
o
-
J
u
n
h
o
2
0
1
3
4
4
E
d
i
o
-
F
e
v
e
r
e
i
r
o
2
0
1
4
4
2
E
d
i
o
-
S
e
t
e
m
b
r
o
2
0
1
3
4
0
E
d
i
o
-
A
b
r
i
l
2
0
1
3
4
3
E
d
i
o
-
D
e
z
e
m
b
r
o
2
0
1
3