170
1 SISTEMA DE ENSINO PRESENCIAL CONECTADO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ODIRNEY LUCIANO BERNDT STURM ESTÁGIO CURRICULAR OBRIGATÓRIO II - TCC SEMESTRE VI Toledo 2012

estágio curricular obrigatório ii - tcc (final)

  • Upload
    frsouza

  • View
    47

  • Download
    8

Embed Size (px)

Citation preview

  • 1SISTEMA DE ENSINO PRESENCIAL CONECTADOSUPERIOR DE TECNOLOGIA EM ANLISE E

    DESENVOLVIMENTO DE SISTEMAS

    ODIRNEY LUCIANO BERNDT STURM

    ESTGIO CURRICULAR OBRIGATRIO II - TCCSEMESTRE VI

    Toledo2012

  • 2ODIRNEY LUCIANO BERNDT STURM

    ESTGIO CURRICULAR OBRIGATRIO II - TCCSEMESTRE VI

    Projeto de Estgio apresentado a UNOPAR - Universidade Norte do Paran, como requisito

    parcial para obteno do ttulo de Tecnologia em Anlise e Desenvolvimento de Sistemas .

    Tutor Eletrnico: FABIANE NENCI ALBERGONE CACHOEIRA Tutor de Sala: RAFAEL CARLOS PAVAN Supervisor de Campo: RAFAEL AUGUSTO LIMBERGER

    Professores: ANDERSON MACEDO VERONICE FREITAS ADRIANE LOPER DORIVAL MAGRO JR

    Toledo2012

  • 3SUMRIO

    INTRODUO.............................................................................................................5

    1 JUSTIFICATIVA........................................................................................................6

    2 OBJETIVOS .........................................................................................................72.1 Objetivo Geral.......................................................................................................72.2 Objetivos Especficos..........................................................................................7

    2.2.1 Objetivos de Estudo..................................................................................72.2.2 Objetivos do Software...............................................................................7

    3 METODOLOGIA.......................................................................................................93.1 Sobre Orientao Voltada a Objetos..................................................................9

    3.1.1 Vantagens...............................................................................................93.2 Sobre o Modelo de Desenvolvimento...............................................................10

    3.2.1 MVC (Modelo Visualizao Controle).....................................................103.2.1.1 Aplicaes Monolticas..............................................................113.2.1.2 Aplicaes em Duas Camadas.................................................113.2.1.3 Aplicaes em Trs Camadas..................................................113.2.1.4 O padro MVC..........................................................................123.2.1.5 Camadas...................................................................................123.2.1.6 Vantagens do modelo MVC......................................................133.2.1.7 Desvantagens do modelo MVC................................................13

    3.3 Ergonomia..........................................................................................................133.3.1 Usabilidade.............................................................................................143.3.2 Problemas de Usabilidade......................................................................143.3.3 Avaliao de

    Usabilidade........................................................................153.3.4 Tcnicas de Avaliao de Usabilidade...................................................163.3.5 Ergonomia no sistema da Churrascaria Paiol........................................16

    3.3.5.1 Avaliao Heurstica.................................................................163.3.5.2 Questionrios............................................................................18

    3.3.5.2.1 Questionrio Para Medir A SatisfaoDos Usurios Do Sistema PAIOL............................................19

    4 CARACTERIZAO DA EMPRESA .................................................................254.1 Misso, Viso e Valores ................................................................................254.2 Organograma .................................................................................................25

    5 TECNOLOGIA ....................................................................................................275.1 Sobre o C# ......................................................................................................27

    5.1.1 Histria ...............................................................................................27

  • 45.1.2 Etimologia ...........................................................................................275.1.3 Caractersticas ...................................................................................275.1.4 Bibliotecas ..........................................................................................295.1.5 Normalizao .....................................................................................29

    5.2 Ferramentas ...................................................................................................305.2.1 ASTAH ...............................................................................................305.2.2 brModelo ............................................................................................305.2.3 Banco de Dados PostgresSQL ..........................................................305.2.4 Microsoft .Net Framework ..................................................................315.2.5 Visual Studio 2010 .............................................................................32

    5.3 Sobre a Rede ..................................................................................................335.3.1 Wireless lan Rede Sem Fios ...........................................................34

    5.4 Sobre o Sistema Operacional .......................................................................34

    6 DIAGRAMAS ......................................................................................................366.1 Diagrama De Casos De Uso ..........................................................................366.2 Diagrama de Classes .....................................................................................376.3 Diagrama de Entidade Relacionamento Conceitual ...................................386.4 Diagrama de Entidade Relacionamento Lgico (Classes) .........................396.5 Diagrama de Sequncia (Classes) ...............................................................406.6 Diagrama de Atividades ............................................................................42

    7 TELAS DO SISTEMA .........................................................................................437.1 Prottipos .......................................................................................................437.2 Telas Finais ....................................................................................................48

    8 CDIGO FONTE ................................................................................................64

    9 CRONOGRAMA ...............................................................................................158

    CONCLUSO ......................................................................................................162

    REFERNCIAS ...................................................................................................163

  • 5 INTRODUO

    Este trabalho tem o propsito de apresentar, como parte da matria Estgio Curricular Obrigatrio II - TCC, os conceitos e conhecimentos adquiridos atravs das disciplinas abordadas durante o curso de Tecnologia em Anlise e Desenvolvimento de Sistemas da UNOPAR Universidade do Norte do Paran.

    O objetivo principal deste Estgio preparar o aluno para o mercado de trabalho, inserindo-o diretamente em uma empresa parceira, a fim de absorver conhecimentos, entender os processos, confrontar situaes e desenvolver habilidades inerentes ao Tecnlogo Analista e Desenvolvedor de Sistemas, de modo a preparar o estudante para, no futuro, desempenhar suas atividades de forma responsvel e profissional.

    Durante o estgio, ao realizar seu Trabalho de Concluso de Curso, o aluno desenvolveu, junto a empresa parceira, um software de controle de Clientes e Pedidos, bem como todos os complementos a ele necessrios, como levantamento de requisitos, diagramas, cronogramas, demais documentaes, definies de tticas utilizadas e mtodos de desenvolvimento de software, testes e por fim, a implementao e acompanhamento do sistema.

    A empresa no contava com um sistema informatizado para realizar essas operaes, valendo-se de mtodos arcaicos e pouco produtivos para sua execuo, como acompanhamento por fichas de papel e agendas com registros de clientes. Realizou-se, ao final do projeto, a entrega de um software totalmente funcional que veio a agregar versatilidade, agilidade e segurana no cumprimento das operaes de cadastramento, acompanhamento e consulta a clientes, assim como em relao a pedidos por eles realizados. Em um momento futuro, o sistema deve ser aperfeioado, recebendo incrementaes destinadas a controlar fornecedores e empregados, alm de outras caractersticas funcionais extras.

    Visando melhor aproveitamento, o aluno teve suas atividades acompanhadas e supervisionadas pelo Tutor de Sala, pelo Tutor Eletrnico e, externamente, pelo Supervisor de Campo, a fim de preencher as lacunas de conhecimento do aluno, e tambm com o objetivo de auxili-lo e orient-lo no que fosse necessrio.

  • 61 JUSTIFICATIVA

    Ao desenvolver o trabalho de levantamento de dados referente a Churrascaria Paiol, foi solicitado que explanassem sobre a estrutura organizacional de funcionamento e gerenciamento da empresa, e rapidamente foi constatado que esta mantinha um sistema arcaico de controle de pedidos internos e externos. Tambm foram percebidas outras situaes problemticas, como extravio de pedidos, carncia de sistema organizacional que gere controle de estoque, falha humana no encaminhamento dos pedidos - esquecimento - aos setores de produo competentes, ausncia de controle eficiente de contas a pagar e receber, notas fiscais emitidas somente quando o cliente solicitava, ausncia de cadastro dos clientes de forma clara e organizada, dentre outros. A empresa atende diariamente, o cliente recepcionado no atendimento (o mesmo para o caso de vendas por telefone), e ento encaminhado ao setor onde ser servido, ou ento o pedido, caso trate-se de entrega, ser direcionado ao setor de expedio, que por sua vez repassar ao setor de produo, mais tarde recebendo o produto e enviando-o ao destino, seja o cliente presencial ou externo.

    O atendimento funcional efetuado atravs de anotao do pedido do cliente em bloquetos de papel, repassados de mo em mo por vrios setores da empresa, enquanto o cliente permanece com uma comanda, tambm de papel. Os pedidos para entrega seguem o mesmo padro, mas descarta-se o uso de comanda nessa situao.

    O controle de clientes feito atravs de agendas, onde so registrados nomes, endereos e telefones, assim como um histrico de consumo, tudo muito desorganizado e pouco prtico.

    Assim, em virtude do exposto, e com a concorrncia existindo em todos os segmentos, a Churrascaria Paiol mostrou-se um exemplo perfeito onde um sistema informatizado resultaria em grandes benefcios, para a empresa e para o cliente. Dessa forma, desenvolveu-se um programa que apresenta funo de controle de pedidos e cadastro de clientes, e, futuramente, controle de emisso de notas fiscais, controle de fornecedores, de faturamento da empresa, entre outras funes que sero determinadas ao longo do tempo

  • 72 OBJETIVOS

    2.1 Objetivo Geral

    Desenvolver um sistema que tenha como funo primria o controle de pedidos e gerenciamento de clientes da empresa.

    2.2 Objetivos Especficos

    2.2.1 Objetivos de Estudo

    O software desenvolvido deve contar com uma interface grfica simples e intuitiva, de fcil adaptabilidade para novos usurios, porm completamente funcional e com todos os recursos necessrios para o desenvolvimento das atividades da empresa.

    Ser desenvolvido em C#, uma linguagem de programao orientada a objetos criada pela Microsoft, e apresentar documentao completa, desde questionrios de levantamento de requisitos at os diagramas de casos de usos, passando por prototipao de janelas e demais etapas do desenvolvimento de software Orientado a Objetos.

    Assim sendo, podemos enumerar os seguintes objetivos de aprendizado:

    Estudar a linguagem de programao C# para o desenvolvimento do software

    Estudar o Banco de dados para o armazenamento de dados do Sistema;

    Estudar sobre Diagrama de Fluxo de Dados; Estudar sobre Modelagem de Dados; Estudar sobre Dicionrio de Dados; Estudar sobre MER; Estudo das necessidades e analise; Desenvolvimento da modelagem de dados; Seleo das ferramentas; Desenvolvimento do prottipo;

    2.2.2 Objetivos do Software

  • 8 Apresentar uma interface grfica de fcil assimilao e com recursos intuitivos, de funcionamento gil e sem falhas

    Apresentar recursos prticos para cadastramento de clientes, uma vez que isso fundamental para entender seus hbitos de consumo. Assim, a empresa tem informao de qualidade para criar aes direcionadas de vendas, como promoes e marketing direto, alm de ter acesso aos dados do cliente quando ele entra em contato pelo servio de atendimento. Oferecendo a cada cliente o produto certo na hora certa, o resultado certamente ser fidelidade e satisfao

    Apresentar funes completas e teis para o controle de pedidos e entregas, uma vez que, com a gesto eficiente das informaes e correto direcionamento para os setores responsveis, fica garantida a total eficincia e agilidade do processo.

    Futuramente, oferecer um mtodo de controle de contas a pagar e receber para que a empresa possa ter um maior controle sobre os gastos, assim como oferecer mais um meio de controle fiscal, de controle do estoque de produtos, e demais funes que sero levantadas em etapas futuras de desenvolvimento, no na etapa do projeto que engloba o estgio.

  • 93 METODOLOGIA

    3.1 Sobre Orientao Voltada a Objetos

    A Programao Orientada a Objetos (POO) um dos principais paradigmas de programao. Comparemos com outro paradigma: a Programao Estruturada. No paradigma estruturado os programadores se ocupam basicamente em desenvolver funes. Todo programa escrito usando o paradigma estruturado possui dezenas, centenas, milhares de funes, que juntas compem o sistema e o fazem funcionar. No paradigma estruturado, obviamente existem os dados necessrios para implementar o sistema, mas os dados e as funes no esto intimamente ligados entre si. Na Programao Estruturada, em um documento de especificao (onde esto todos os requisitos e descreve o que o programa deve fazer) os verbos indicam possveis funes a serem implementadas no sistema.

    J na POO, os programadores se ocupam basicamente em projetar e implementar classes. Encapsulados dentro das classes esto os atributos e os mtodos. Os atributos em uma classe so quase o mesmo que as variveis num programa estruturado, com a diferena que os atributos esto intimamente ligados aos mtodos que os manipulam, sendo que os mtodos so quase o mesmo que as funes. Na POO existe um maior controle sobre as partes componentes do sistema e das interaes entre elas. A partir das classes possvel instanciar quantos objetos (instncias) forem necessrios para implementar o sistema, e estes objetos devem trabalhar juntos para que tudo funcione. Na POO, em um documento de especificao, os substantivos indicam possveis classes a serem projetadas e implementadas no sistema.

    3.1.1 Vantagens

    Reusabilidade de cdigo Escalabilidade de aplicaes Mantenabilidade Apropriao

    A reusabilidade de cdigo , sem dvida, reconhecida como a maior vantagem da utilizao de Programao Orientada a Objetos (POO), pois permite que programas sejam escritos mais rapidamente. Todas as empresas sofrem de deficincia em seus sistemas informatizados para obter maior agilidade e prestar melhores servios a seus clientes. Uma vez que a demanda est sempre

  • 10

    aumentando, procura-se maneiras de desenvolver sistemas mais rapidamente, o que est gerando uma srie de novas metodologias e tcnicas de construo de sistemas (por exemplo, ferramentas CASE). A POO, atravs da reusabilidade de cdigo, traz uma contribuio imensa nesta rea, possibilitando o desenvolvimento de novos sistemas utilizando-se muito cdigo j existente. A maior contribuio para reusabilidade de cdigo apresentada pela herana.

    Escalabilidade pode ser vista como a capacidade de uma aplicao crescer facilmente sem aumentar demasiadamente a sua complexidade ou comprometer o seu desempenho. A POO adequada ao desenvolvimento de grandes sistemas uma vez que pode-se construir e ampliar um sistema agrupando objetos e fazendo-os trocar mensagens entre si. Esta viso de sistema uniforme, seja para pequenos ou grandes sistemas (logicamente, deve-se guardar as devidas propores).

    O encapsulamento proporciona ocultamento e proteo da informao. Acessos a objetos somente podem ser realizados atravs das mensagens que ele est habilitado a receber. Nenhum objeto pode manipular diretamente o estado interno de outro objeto. De modo que, se houver necessidade de alterar as propriedades de um objeto ou a implementao de algum mtodo, os outros objetos no sofrero nenhum impacto, desde que a interface permanea idntica. Isto diminui em grande parte os esforos despendidos em manuteno. Alm disso, para utilizar um objeto, o programador no necessita conhecer a fundo a sua implementao.

    O polimorfismo torna o programa mais enxuto, claro e fcil de compreender. Sem polimorfismo, seriam necessrias listas enormes de mtodos com nomes diferentes mas comportamento similar. Na programao, a escolha de um entre os vrios mtodos seria realizada por estruturas de mltipla escolha (CASE) muito grandes. Em termos de manuteno, isto significa que o programa ser mais facilmente entendido e alterado.

    A herana tambm torna a manuteno mais fcil. Se uma aplicao precisa de alguma funcionalidade adicional, no necessrio alterar o cdigo atual. Simplesmente cria-se uma nova gerao de uma classe, herdando o comportamento antigo e adiciona-se novo comportamento ou redefine-se o comportamento antigo.

    3.2 Sobre o Modelo de Desenvolvimento

    3.2.1 MVC (Modelo Visualizao Controle)

    Padres de projetos (do ingls Design Patterns), so solues para problemas que algum um dia teve e resolveu aplicando um modelo que foi documentado e que se pode adaptar integralmente ou de acordo com necessidade de sua soluo.

    O grande desafio das equipes de desenvolvimento de aplicaes cada vez mais produzir aplicativos seguros, eficientes, de fcil manuteno, reutilizveis e em prazos cada vez menores.

    O paradigma da orientao a objetos tem tido um grande avano nestes ltimos tempos (leia-se Java e agora .NET) , tanto que , segundo o Partner Group,

  • 11

    dentre as tecnologias que vo sobreviver no mercado nos prximos anos esto Java e .NET. A Microsoft lanou a tecnologia .NET e tornou orientada a objetos o Visual Basic, trazendo consigo o C# para quem usa Java. Estima-se que a partir de agora ser impensvel produzir aplicaes que no sejam orientadas a objetos desde sua concepo.

    O sucesso para o desenvolvimento de aplicaes com tecnologia orientada a objetos esta intimamente ligada arquitetura usada para construir a aplicao. A tendncia indica que esta arquitetura estar baseada na organizao da aplicao em camadas e na observao dos padres utilizados pelo mercado.

    A organizao em camadas a chave para a independncia entre os componentes e esta independncia que vai atingir os objetivos de eficincia , escalabilidade , reutilizao e facilidade de manuteno.

    3.2.1.1 Aplicaes Monolticas

    Antigamente, um aplicativo era desenvolvido para ser usado em uma nica mquina. Geralmente este aplicativo continha todas a funcionalidades em um nico mdulo gerado por uma grande quantidade de linhas de cdigo e de difcil manuteno. A entrada do usurio, verificao, lgica de negcio e acesso a banco de dados estava presente em um mesmo lugar.

    3.2.1.2 Aplicaes em Duas Camadas

    A necessidade de compartilhar a lgica de acesso a dados entre vrios usurios simultneos fez surgir as aplicaes em duas camadas. Nesta estrutura a base de dados foi colocada em uma mquina especfica, separada das mquinas que executavam as aplicaes. Nesta abordagem temos aplicativos instalados em estaes clientes contendo toda a lgica da aplicao. Um grande problema neste modelo o gerenciamento de verses pois para cada alterao os aplicativos precisam ser atualizados em todas as mquinas clientes.

    3.2.1.3 Aplicaes em Trs Camadas

    Com o advento da internet houve um movimento para separar a lgica de negcio da interface com o usurio. A ideia que os usurios da WEB possam acessar as mesmas aplicaes sem ter que instalar estas aplicaes em suas mquinas locais.

    Neste modelo o aplicativo movido para o Servidor e um navegador Web usado como um cliente. O aplicativo executado em servidores Web com os quais o navegador Web se comunica e gera o cdigo HTML para ser exibido no cliente.

    Neste modelo a lgica de apresentao esta separada em sua prpria camada lgica e fsica. A separao em camadas lgicas torna os sistemas mais

  • 12

    flexveis permitindo que as partes possam ser alteradas de forma independente. As funcionalidades da camada de negcio podem ser divididas em classes e essas classes podem ser agrupadas em pacotes ou componentes, reduzindo as dependncias entre as classes e pacotes. Podem ser tambm reutilizadas por diferentes partes do aplicativo e at por aplicativos diferentes. O modelo de trs camadas tornou-se a arquitetura padro para sistemas corporativos com base na Web.

    A modelagem orientada a objetos ajuda a promover a modularidade pois os objetos encapsulam seus dados (propriedades, estados) e oferecem funcionalidades atravs de seus mtodos. Projetando-se de forma adequada os objetos podem ter reduzidas as dependncias entre si ficando assim fracamente acoplados e sero mais fceis de manter e evoluir.

    3.2.1.4 O padro MVC

    O modelo de trs camadas fsicas (3-tier) divide um aplicativo de modo que a lgica de negcio resida no meio das trs camadas fsicas. Isto chamado de camada fsica intermediria ou camada fsica de negcios. A maior parte do cdigo escrito reside na camada de apresentao e de negcio.

    A arquitetura MVC (Modelo Visualizao Controle), fornece uma maneira de dividir a funcionalidade envolvida na manuteno e apresentao dos dados de uma aplicao. A arquitetura MVC no nova e foi originalmente desenvolvida para mapear as tarefas tradicionais de entrada, processamento e sada para o modelo de interao com o usurio. Usando o padro MVC fica fcil mapear esses conceitos no domnio de aplicaes Web multicamadas.

    Na arquitetura MVC o modelo representa os dados da aplicao e as regras do negcio que governam o acesso e a modificao dos dados. O modelo mantm o estado persistente do negcio e fornece ao controlador a capacidade de acessar as funcionalidades da aplicao encapsuladas pelo prprio modelo.

    Um componente de visualizao renderiza o contedo de uma parte particular do modelo e encaminha para o controlador as aes do usurio; acessa tambm os dados do modelo via controlador e define como esses dados devem ser apresentados.

    Um controlador define o comportamento da aplicao, ele que interpreta as aes do usurio e as mapeia para chamadas do modelo. Em um cliente de aplicaes Web essas aes do usurio poderiam ser cliques de botes ou selees de menus. As aes realizadas pelo modelo incluem ativar processos de negcio ou alterar o estado do modelo. Com base na ao do usurio e no resultado do processamento do modelo, o controlador seleciona uma visualizao a ser exibida como parte da resposta a solicitao do usurio. H normalmente um controlador para cada conjunto de funcionalidades relacionadas.

    3.2.1.5 Camadas

  • 13

    Camada de apresentao ou visualizao: No esta preocupada em como a informao foi obtida ou onde ela foi obtida apenas exibe a informao.

    Inclui os elementos de exibio no cliente : HTML, XML, ASP, Applets a camada de interface com o usurio usada para receber a entrada de dados e apresentar o resultado

    Camada de lgica da Aplicao: o corao da aplicao. Responsvel por tudo que a aplicao vai fazer.

    Modela os dados e o comportamento por atrs do processo de negcios Se preocupa apenas com o armazenamento, manipulao e gerao de

    dados um encapsulamento de dados e de comportamento independente da

    apresentao

    Camada de Controle: determina o fluxo da apresentao servindo como uma camada intermediria entre a camada de apresentao e a lgica.

    Controla e mapeia as aes

    3.2.1.6 Vantagens do modelo MVC

    Como o modelo MVC gerencia mltiplos visualizadores usando o mesmo modelo fcil manter , testar e atualizar sistemas mltiplos

    muito simples incluir novos clientes apenas incluindo seus visualizadores e controles

    Torna a aplicao escalvel possvel ter desenvolvimento em paralelo para o modelo , visualizador e

    controle pois so independentes

    3.2.1.7 Desvantagens do modelo MVC

    Requer uma quantidade maior de tempo para analisar e modelar o sistema

    Requer pessoal especializado No aconselhvel para pequenas aplicaes

    3.3 Ergonomia

    A ergonomia busca a melhoria das condies de trabalho e seu objetivo a adaptao do trabalho ao homem, com a finalidade de obter a satisfao e

  • 14

    produtividade no mesmo. Segundo Ramos(1996) a ergonomia se interessa de maneira geral pelo

    melhoramento das condies de trabalho. J a ergonomia de software, concentra-se particularmente nas condies de utilizao de um software por seus usurios.

    De acordo com Andrs (1998) dentro da Ergonomia existem estudos sobre a Interface Humano Computador (IHC), onde so oferecidas bases tericas e metodolgicas capazes de tratar as dificuldades relacionadas com o homem e a mquina, tendo como objetivo alcanar o equilbrio, o conforto, a satisfao, a segurana e a eficincia na utilizao de produtos e ferramentas informatizados.

    Propondo regulamentaes como documentaes, padres de telas, dilogos e outros, a ergonomia de software segundo Borges (1993) a cincia que estuda todos os aspectos referentes ao conforto, utilizao, documentao e todo efeito que um software possa gerar no seu contato com o ser humano facilitando e otimizando o trabalho do usurio com o computador.

    Para tornar acessvel para todos o conhecimento sobre ergonomia de interfaces homem computador, Bastien e Dominique Scapin (1993) criaram um sistema de critrios, ferramenta usada para auxiliar na avaliao de interface homem computador.

    3.3.1 Usabilidade

    Usabilidade um termo empregado para descrever a qualidade de interao de usurios com algum tipo de interface.

    Nielsen (2003), define usabilidade como uma medida da qualidade da experincia do usurio ao interagir com alguma coisa - seja um site na Internet, um aplicativo de software tradicional, ou outro dispositivo que o usurio possa operar de alguma forma.

    Segundo o mesmo autor existem cinco atributos da usabilidade:

    Ser fcil de aprender; Ser eficiente; Ser fcil de ser lembrado; Ter poucos erros; Gerar satisfao;

    A ISO9241, por sua vez, define usabilidade como a efetividade, eficincia e a satisfao com que determinados usurios conseguem atingir objetivos especficos em determinadas circunstncias (ISO 9241 11, 1994).

    3.3.2 Problemas de Usabilidade

    Uma determinada interface considerada com problemas de usabilidade quando um usurio ou um grupo de usurios encontra dificuldades para realizar uma tarefa, ocasionando at mesmo a total rejeio do software pelo usurio.

    Segundo Cybis (2000,p.79): Um problema de usabilidade ocorre em

  • 15

    determinadas circunstncias, quando determinada caracterstica do sistema interativo, acaba por retardar, prejudicar ou mesmo inviabilizar a realizao de uma tarefa, aborrecendo, constrangendo ou at traumatizando a pessoa que usa o sistema interativo. Deste modo, um problema de usabilidade se revela durante a interao, atrapalhando o usurio e a realizao de sua tarefa, mas tem sua origem em decises de projeto equivocadas.

    Os maiores problemas encontrados pelos usurios nas interfaces Web centram-se na dificuldade de encontrar a informao, retornar a pagina e a invalidade de links com URLs.

    Para Winckler (2001,p.6) A interpretao do que um problema de usabilidade pode variar, e o que representa um problema para um usurio pode no ser um problema para outro. Por exemplo, considere dois usurios sendo que o primeiro tem uma conexo Internet de rpido acesso (tipo ISDN) e o segundo usa uma conexo modem de 56 kb; provavelmente eles tm opinies diferentes sobre a velocidade de apresentao de uma pgina Web que contm muitas imagens. Outro exemplo de origem de problemas a incompatibilidade entre browsers que no suportam da mesma maneira as diferentes tecnologias para construo de interfaces Web; assim, um usurio pode visualizar sem problemas uma interface com o browser Internet Explorer enquanto a mesma interface pode apresentar uma srie de problemas sobre o browser Netscape, e vice-versa

    O autor acima citado enfatiza que um dos aspectos mais importantes para determinao do que um problema de usabilidade conhecer bem os usurios da aplicao.

    3.3.3 Avaliao de Usabilidade

    A avaliao da usabilidade pode ser realizada em qualquer fase do desenvolvimento de sistemas interativos:

    na fase inicial, serve para identificar parmetros ou elementos a serem implementados no sistema;

    na fase intermediria, til na validao ou refinamento do projeto; na fase final, assegura que o sistema atende aos objetivos e as necessidades

    dos usurios.

    Recomenda-se que essas avaliaes realizem-se pelo menos a partir da fase de refinamento ou validao do projeto.

    Considerando as definies apresentadas no captulo anterior, a avaliao de usabilidade, segundo a ISO 9241 parte 11, tem por objetivos avaliar um sistema interativo nos seguintes aspectos:

    Eficcia - Grau de preciso e de abrangncia obtidos na interao do usurio com os sistemas;

    Eficincia - Em relao ao emprego de recursos aplicados para o usurio atingir seus objetivos, como tempo, esforos mentais, fsicos, operacionais, ambientais, hardware, software;

  • 16

    Satisfao - Compreendida pela norma como o grau de conforto e de reao favorvel do usurio ao interagir com o sistema.Conforme Cybis (2000,p.82), as avaliaes de usabilidade permitem obter os

    seguintes resultados:

    Constatar, observar e registrar, problemas efetivos de usabilidade durante a interao;

    Calcular mtricas objetivas para eficcia, eficincia e produtividade do usurio na interao com o sistema;

    Diagnosticar as caractersticas do projeto que provavelmente atrapalhem a interao por estarem em desconformidade com padres implcitos e explcitos de usabilidade;

    Prever dificuldades de aprendizado na operao do sistema; Prever os tempos de execuo de tarefas informatizadas; Conhecer a opinio do usurio em relao ao sistema; Sugerir as aes de re-projeto mais evidentes face os problemas de interao

    efetivos ou diagnosticados.

    3.3.4 Tcnicas de Avaliao de Usabilidade

    Classificaes para os tipos de avaliao de usabilidade so referenciadas por diversos autores. Estes autores classificam os tipos de avaliaes de interfaces com nomenclaturas pouco diferentes, mas o principal critrio de classificao a participao ou no do usurio.

    Cybis (2000) destaca, trs tipos de tcnicas de avaliao:

    Preditiva/Analticas: essa tcnica no necessita da participao do usurio e deve ser aplicada por avaliadores experientes em avaliao de usabilidade.

    Objetivas/Empricas: o usurio tem participao ativa com sesses de observao da interao, a exemplo da tcnica de ensaios de interao.

    Prospectivas: caracterizam-se, pela participao dos usurios do sistema na avaliao com sua experincia, suas opinies e suas preferncias. Baseiam-se nas aplicaes de questionrios de satisfao ou insatisfao do usurio em relao interao com a interface.

    3.3.5 Ergonomia no sistema da Churrascaria Paiol

    3.3.5.1 Avaliao Heurstica

    Neste projeto, dentre outros usos, aplicaes, implementaes e avaliaes de Ergonomia e IHC, apresentaremos aqui a Avaliao Heurstica, que representam um julgamento de valor sobre as qualidades ergonmicas das interfaces e so

  • 17

    realizadas por especialistas em ergonomia, que examinam o sistema interativo e diagnosticam problemas que o usurio poder ter em uma interao (CYBIS et al, 1998).

    Desenvolvida por Nielsen e Molich (Nielsen,1993) e uma tcnica de inspeo cujo objetivo verificar a conformidade do sistema a padres de qualidade ou heursticas definidas por especialistas, avaliando assim a qualidade do software diagnosticando a priori os problemas encontrados pelos usurios provavelmente durante a interao. Problemas esses de usabilidade que a posteriori sero analisados e corrigidos ao longo do desenvolvimento ou da avaliao.

    Essa tcnica, por apresentar um alto grau de subjetividade, exige um grupo razovel de especialistas em ergonomia. Deste modo, baseados em sua experincia, competncia e conhecimento, so capazes de identificar a maior parte dos problemas ergonmicos das interfaces como demonstra Jeffries et alli (apud Cybis, 2000). A tcnica produz timos resultados, em termos da rapidez de avaliao e da quantidade e importncia de problemas diagnosticados. Os resultados das avaliaes heursticas "dependem diretamente da carga de conhecimento e experincia que as pessoas trazem para as avaliaes, e do tipo de estratgia com que percorrem a interface" (CYBIS, 2000,p.84).

    A tcnica pode ser utilizada quando o sistema j est pronto ou apenas um prottipo. Nielsen sugere que a melhor relao custo/benefcio alcanada quando se utilizam entre trs e cinco avaliadores. Cada avaliador deve realizar a sua inspeo individualmente, e, somente depois, de todas avaliaes concludas, podem se comunicar. Este cuidado importante para garantir avaliaes independentes e sem influncias.

    Uma sesso de avaliao heurstica dura entre uma e duas horas e o resultado lista problemas de usabilidade, indicando quais princpios foram violados e a gravidade dos mesmos WINCKLER(2001,p.19).

    A tcnica foi utilizado pela primeira vez em uma interface Web em 1994, num estudo para o web site da Sun Microsystems (Nielsen e Sano,1995). Uma das grandes vantagens desta tcnica que ela pode ser aplicada em qualquer etapa do desenvolvimento, mesmo sobre prottipos em papel.

    Analisamos, item a item de nosso sistema, e apresentamos sua adequao/avaliao de acordo com o conjunto bsico de heursticas de Nielsen (2006):

    Sobre visibilidade do status do sistema: o sistema mantem o usurio informado sobre o que est acontecendo, fornecendo-lhe feedback em tempo real.

    Compatibilidade do sistema com o mundo real: O sistema fala a linguagem do usurio, com palavras, frases e conceitos familiares a ele, em vez de usar termos tcnicos. Segue convenes do mundo real, dando-lhe uma informao numa ordem natural e lgica;

    Controle e liberdade do usurio: O sistema oferece sadas de emergncia claramente marcadas para abandonar a operao sem ter que percorrer um extenso dilogo.

    Consistncia e padres: o sistema segue as convenes de plataforma computacional;

    Preveno de erro: foi projetado com base a evitar erros.

  • 18

    Reconhecimento em vez de lembrana: o uso de memria do usurio foi minimizado, com instrues para uso do sistema visveis e facilmente recuperveis.

    Flexibilidade e eficincia de uso: existem funcionalidades que permite aos usurios avanados potencializar o uso do sistema, atravs de atalhos, por exemplo.

    Design esttico e minimalista: dilogos contm somente informaes relevantes.

    Para ajudar os usurios a reconhecer, diagnosticar erros e recuperar-se deles: mensagens de erro expressas em linguagem clara (sem cdigo) e indicando precisamente o problema e sugerindo uma soluo;

    Ajuda e documentao: existe documentao textual a ser acessada atravs do Menu do programa.

    3.3.5.2 Questionrios

    Questionrios so ferramentas muito teis para avaliar a interao entre o usurio e a interface. Utiliza-se para coletar informaes subjetivas sobre a qualidade da interface, dados sobre o perfil dos usurios e quais os problemas encontrados no momento. Estas informaes so to (ou mais) importantes quanto a performance do sistema, e no podem ser obtidas de outra forma seno perguntando aos usurios.

    Como visto em Medeiros (1999) atualmente grandes empresas de software confeccionam e aplicam regularmente questionrios durante todo o desenvolvimento do projeto como uma estratgia de busca de qualidade. Os mesmos mostram-se pertinentes pois o usurio que melhor conhece o software, seus defeitos e qualidades em relao aos seus objetivos e suas tarefas.

    Essa tcnica pode servir como um excelente complemento para os testes de usabilidade e revises especializadas afirma Shneideman (apud MEDEIROS, 1999,p.48).

    Na maioria das vezes um modelo de questionrio apoia-se nas experincias e heursticas de seus elaboradores. Quando utilizado em pesquisas reais ou simulados, o modelo depara-se com circunstncias e necessidades no previstas inicialmente o que determinar os refinamentos e ajustes, que aplicados sucessivamente, permitiro a evoluo das questes (NIELSEN,1994).Winckler (2001,p.24) afirma que questionrios podem ser teis de diferentes maneiras dentro do desenvolvimento de interfaces Web como, por exemplo, para:

    Identificao do perfil dos usurios o objetivo coletar informaes de origem funcional, pessoal, preferncias ou sobre a utilizao de computadores e sistemas, entre outras;

    Determinao do grau de satisfao dos usurios com relao interface; Estruturao das informaes sobre problemas de usabilidade identificados

    por usurios.

    Questionrios de avaliao de satisfao so considerados aplicveis s

  • 19

    fases finais do projeto de software ou Web. O uso mais frequente d-se aps a concluso do produto, servindo para calibrar a qualidade do produto e para implementar novos recursos, ou para correo de falhas como interao ou performance.

    Esses questionrios de satisfao devem ser sucintos, com poucas questes, e com espaos livres, caso o usurio deseje dar sugestes ou opinies. Infelizmente eles podem possuir uma baixa taxa de devoluo. No mximo de 30 % retornam confirma (CYBIS, 2000).

    Emprega-se esta tcnica para aumentar a efetividade de avaliaes analticas, realizadas por especialistas ao diagnosticarem problemas de usabilidade. Atravs das respostas do questionrio de satisfao, os especialistas centram suas anlises sobre os pontos problemticos no sistema, citados pelo usurio (CYBIS, 2000).

    Uma das grandes vantagens dos questionrios a quantidade de usurios, dispersos geograficamente ou divididos por perfil, pode-se aplicar a todos ao mesmo tempo utilizando o prprio ambiente Web. Com esse instrumento, identifica-se problemas de uso do sistema por certo tipo de usurios, em um ambiente proposto ou realizando determinada tarefa (DIAS, 2001).

    Para Leite J.C. & Tavares T.A.(2001) os questionrios, divididos em uma sries de indagaes sobre um determinado assunto, incluem perguntas do tipo abertas ou fechadas.

    Ainda os mesmos autores esclarecem que as perguntas do tipo abertas so aquelas onde possvel obter respostas discursivas dos usurios referente a algum assunto, atravs do preenchimento de uma nota. Sabe-se que esse tipo de pergunta depreende tempo para anlise e tabulao dos dados.

    J nas do tipo fechadas, o usurio tem um conjunto de possveis respostas preestabelecidas a escolher. Assim, expressa sua opinio concordando ou discordando de afirmativas dadas.

    A seguir, o questionrio a ser utilizado junto aos usurios do sistema desenvolvido para a Churrascaria Paiol.

    3.3.5.2.1 Questionrio Para Medir A Satisfao Dos Usurios Do Sistema PAIOL

    Este servio tem como objetivo principal melhor permanentemente a qualidade dos Servios prestados.

    Seo 1 : Perfil do Usurio

    1: Identificao funcional do usurio1.1 Qual seu setor? ___________________2: Informaes pessoais2.1 Sexo: ( ) M ( ) F

    3: Experincia do usurio com computadores3.1 A quanto tempo voc utiliza um computador?

  • 20

    ( ) Menos de 6 meses( ) entre 6 meses 1 ano( ) entre 1 2 anos( ) entre 2 e 5 anos( ) Mais de 5 anos

    3.2 Quantas horas por semana, em mdia, voc utiliza o computador?( ) Menos de 2 horas( ) entre 2 5 horas( ) entre 5 10 horas( ) Mais de 10 horas

    4: Sua experincia com a Internet 4.1- H quanto tempo voc navega na Internet? ( )menos de 2 semanas( )de 2 semanas a 1 ms( )de 1 a 3 meses( )de 3 a 6 seis meses( )de 6 meses a 1 ano( )de um ano a dois anos( )de dois anos a trs anos( )trs anos ou mais

    4.2 - Quanto tempo voc gasta por semana na internet( )menos de uma hora( )de uma hora a quatro horas( )de quatro horas a dez horas( )mais de dez horas

    5: Sua experincia com sistemas prprios5.1 a primeira vez que utiliza um sistema prprio de uma empresa/rgo?( )Sim( )No

    5.2 Com que frequncia voc utiliza um desses sistemas?( ) Diariamente( ) Algumas vezes por semana( ) Algumas vezes no ms( ) Menos de uma vez por ms( ) Esta a minha primeira visita

    5.3 Em mdia quanto tempo voc gasta por semana neste sistema?( )menos de uma hora( )de uma hora a quatro horas( )de quatro horas a dez horas( )mais de dez horas

    Seo 2: Avaliao da usabilidade

  • 21

    Avalie este local com os critrios descritos abaixo marcando com um X.

    Experincia de navegao no site e Aspectos visuais

    QuestesConcordafortemente

    Concorda Indeciso Discorda Discorda fortemente

    Este sistema tem uma apresentao grfica agradvel e legvelEu sempre sei em que ponto do sistema estou e como chegar onde quero chegarMesmo antes de clicar em um link (ligao com outra pagina ) eu j sei o destino deleDe um modo geral, considero rpido o acesso s informaes do sistema. Os recursos de navegao (menus, cones, links e botes) esto todos claros e fceis de acharLogo que entro no sistema j sei o que ele fazO contedo textual est claro e consistente Os ttulos das funes deste sistema so muito intuitivos fcil a navegao no sistemaVoc tem algum comentrio adicional sobre a navegao deste sistema?

    Procura e produtos

    QuestesConcordafortemente

    Concorda Indeciso Discorda Discorda fortemente

    Existe um local para fazer um procura rpida do material que eu queroFoi possvel encontrar as funes procuradas de maneira fcilTodos as funes esto classificadas claramente e de acordo com seu SegmentoGostei da apresentao dos menus A lista com funes clara e possui todas as informaes necessriasEu gostei da visualizao das funesGostaria que existisse um local onde pudesse ser vistos demais usos da funo

  • 22

    O sistema rpidoEncontrei todos as funes que procuravaEu gosto que o sistema apresente ajuda em cada opoVoc tem algum comentrio adicional sobre as funes deste sistema?

    Processo de Registro de Pedidos

    QuestesConcordafortemente

    Concorda Indeciso Discorda Discorda fortemente

    Na tela de Pedidos, eu possuo todas as informaes que precisoO processo tanto de remover, como alterar a quantidade de itens selecionados para o pedido muito fcilAs opes de Pedidos so fceis de encontrar no sistemaEu possuo todas as informaes necessrias sobre o produto Eu me senti muito seguro utilizando o sistemaEu posso abandonar facilmente um processo de Pedido As informaes sobre o pedido so clarasA Tabela de Pedidos eficiente, objetiva e de fcil preenchimentoA Tabela de Pedidos intuitiva Possuo todas as informaes necessrias quando estou cadastrando os Pedidos muito simples fazer os PedidosO sistema de Pedidos rapidoVoc tem algum comentrio adicional sobre o processo de realizao de pedidos presente no sistema ?

    Servios prestados aos clientes ,Confiana e credibilidade

    QuestesConcordafortemente

    Concorda Indeciso Discorda Discorda fortemente

    Este sistema possui um timo questionrio para expor meus comentrios,

  • 23

    reclamaes ou sugestes!

    O usurio facilmente localiza as informaes sobre o pedidoA tela de ajuda do sistema esta clara e fcil de ser achadaEu gosto que o sistema apresente um local com as perguntas mais frequentesEu me sinto seguro neste sistemaVoc tem algum comentrio adicional sobre a o servio prestado aos usurios deste sistema ?

    Processo de Registro de Clientes

    QuestesConcordafortemente

    Concorda Indeciso Discorda Discorda fortemente

    Na tela de Clientes, eu possuo todas as informaes que precisoO processo tanto de cadastrar, remover, ou alterar Clientes muito fcilAs opes de Controle de Clientes so fceis de encontrar no sistemaEu possuo todas as informaes necessrias sobre os ClientesEu me senti muito seguro utilizando o sistemaEu posso abandonar facilmente um processo de Alterao de Cadastro de Cliente As informaes sobre os Clientes so clarasA Tabela de Clientes eficiente, objetiva e de fcil preenchimentoA Tabela de Clientes intuitiva Possuo todas as informaes necessrias quando estou cadastrando os Clientes muito simples fazer o Cadastramento de ClientesO sistema de Clientes rpidoVoc tem algum comentrio adicional sobre o processo de realizao de pedidos presente no sistema ?

  • 24

    O que voc mais gostou no sistema?

    Voc tem algum comentrio adicional sobre a facilidade de uso deste sistema?

    Como voc acha que este sistema pode ser melhorado?

  • 25

    4 CARACTERIZAO DA EMPRESA

    R.A. Limberger e Cia Ltda MERua Severino Barbieri, 273, Jardim Independncia, Toledo - Paran, CEP 85906-570, Telefone (45) 3278-7476Rafael Augusto Limberger, Proprietrio e Gestor Financeiro

    O software foi desenvolvido para a intitulada Churrascaria Paiol, empresa que desenvolve atividades no ramo de Restaurantes, bares e churrascarias, contando atualmente com seis funcionrios, onde tem-se como atividade principal a preparao e comercializao de refeies e bebidas, focando na tele entrega, de forma gil e competente, destes produtos, motivos estes que levaram a empresa a procurar uma soluo tecnolgica para desenvolver de forma mais organizada e profissional o controle de clientes e pedidos.

    A Churrascaria Paiol foi criada em 1995, inicialmente com sede em Novo Sarandi, distrito do municpio de Toledo. Em 2001, foi transferida para Vila Nova, tambm distrito de Toledo. No ano de 2004, a empresa alcanou porte e competncia suficiente para buscar novos e melhores negcios, de forma que foi reformulada, reorganizada e transferida para o Municpio de Toledo, onde hoje ainda presta servios de forma exemplar, tendo reconhecimento no meio empresarial e junto a comunidade local.

    4.1 Misso, Viso e Valores

    Misso: Atender e superar as expectativas dos nossos clientes, atravs de nosso servio de alimentao e de nossos fornecedores.

    Viso: Ser a melhor empresa de Churrascaria agregando qualidade e servio.

    Valores: Garantia de Qualidade dos produtos utilizados; Fidelizao de seus Clientes e Fornecedores, por meios saudveis e duradouras parcerias; Valorizao e Capacitao de seus profissionais; Seleo de alimentos que atendem as necessidades de nossos clientes.

    4.2 Organograma

    A empresa apresenta o seguinte organograma:

  • 26

  • 27

    5 TECNOLOGIA

    5.1 Sobre o C#

    5.1.1 Histria

    Durante o desenvolvimento da plataforma .NET, as bibliotecas foram escritas originalmente numa linguagem chamada Simple Managed C (SMC), que tinha um compilador prprio. Mas, em Janeiro de 1999, uma equipe de desenvolvimento foi formada por Anders Hejlsberg, que fora escolhido pela Microsoft para desenvolver a linguagem. D-se inicio criao da linguagem chamada Cool. Um pouco mais tarde, em 2000, o projeto .NET era apresentado ao pblico na Professional Developers Conference (PDC), e a linguagem Cool fora renomeada e apresentada como C#.

    A criao da linguagem, embora tenha sido feita por vrios programadores, atribuda principalmente a Anders, hoje um Distinguished Engineer na Microsoft. Ele fora o arquiteto de alguns compiladores da Borland, e entre suas criaes mais conhecidas esto o Turbo Pascale o Delphi.

    5.1.2 Etimologia

    Pensava-se que o nome C# viria duma sobreposio de quatro smbolos +, dando a impresso de ++++, uma aluso continuao do C++. Entretanto, o # de C# se refere ao sinal musical (sustenido), que aumenta em meio tom uma nota musical. O smbolo real seria o e no o#. Porm, devido a limitao de telas, fontes e alguns navegadores, no momento da normalizao junto a ECMA, fora especificado apenas que o nome da linguagem seria uma letra C maiscula (U+0043) e o sinal # (U+0023), facilitando assim, publicaes e artigos com um caracter encontrado facilmente dos layouts de teclado padres. Desta forma, caso o nome fosse usado em portugus, seria C Sustenido (ou D Sustenido), e no C Cerquilha.

    5.1.3 Caractersticas

    C# uma linguagem de programao orientada a objetos criada pela Microsoft, faz parte da sua plataforma .NET. A empresa baseou C# nas linguagens

  • 28

    C++ e Java, e ela considerada a linguagem smbolo do .NET, por ter sido criada praticamente do zero para funcionar na nova plataforma, sem preocupaes de compatibilidade com cdigo existente. O compilador C# foi o primeiro a ser desenvolvido, e a maior parte das classes da plataforma foram desenvolvidas nesta linguagem.

    O C# constitudo por diversificadas caractersticas. Por exemplo, a linguagem suporta ponteiros atravs da palavra reservada unsafe (cdigo no-seguro), que obrigatrio. Seu uso no aconselhvel, e blocos de cdigos que o usam geralmente requisitam permisses mais altas de segurana para poderem ser executados. As operaes aritmticas so verificadas contra transbordamento de dados. C# tambm suporta as operaes aritmticas bsicas como adio, subtrao, multiplicao e diviso. Esses smbolos so chamados operadores, e operam os valores das variveis.

    Um coletor de lixo tambm suportado, um processo usado para a manuteno de memria. Com este recurso, possvel recuperar a zona de memria que um programa j no utiliza. Quando isto no ocorre pode acontecer a chamada perda de memria, um erro comum que pode levar ao trmino no desejado do programa em execuo por esgotamento da memria livre.Em C# no existe herana mltipla, ou seja, cada classe s pode herdar apenas uma outra classe e no mais do que uma, no entanto possvel simular herana mltipla utilizando interfaces. Assim, atravs da herana reduzimos cdigo atravs da sua reutilizao.

    Os destrutores so funes que se encarregam de realizar as tarefas que so necessrias executar quando um objecto deixa de existir. Quando este j no est a ser utilizado por nenhuma varivel, deixa de ter sentido que esteja armazenado na memria, portanto, o objecto deve ser destrudo para liberar espao. Para isto chamada a funo destrutor. Os destrutores no podem ser definidos em estruturas, so apenas usados em classes, e uma classe pode apenas ter um destrutor, eles no podem ser herdados ou sobrecarregados, nem podem ser chamados pois so invocados automaticamente. Tambm no pode ser modificado nem de algum modo ter parmetros.

    O C# suporta sobrecarga de mtodos e de operadores, mas no suporta argumentos padro. As nicas converses implcitas por padro so converses seguras tais como, a ampliao de inteiros e converses de um tipo derivado para um tipo base. No existem converses implcitas entre inteiros e variveis booleanas, enumeraes e ponteiros nulos. Qualquer converso implcita definida pelo utilizador deve ser explicita, apesar do C# ser baseado em variveis estticas possvel converter os tipos de dados de uma varivel, desde que essa converso seja possvel, pode ser convertido qualquer tipo primitivo para string, mas nem sempre possvel o contrrio. Uma string que representa um nmero pode ser convertida para um tipo numrico, um nmero pode sempre ser convertido para um nmero com mais bits, exemplo, um tipo byte (8 bits) pode ser convertido para um do tipo int (32 bits). O contrrio nem sempre possvel, de um tipo com mais bits para represent-lo para um com menos bits. Desde que o valor no exceda o limite do tipo menor, a converso ocorrer sem problemas, seno a execuo lana uma exceo. Nas converses que sempre podero acontecer, o mesmo feito automaticamente, sem precisar forar nenhuma dessas converses. A forma mais simples de efetuar a converso usando a classe Convert, que implementa vrios

  • 29

    mtodos que permite a converso de qualquer tipo para outro. Todas as converses de tipo so validadas em funo do tipo real da varivel em tempo de execuo, sem excepes.

    Existem diversos mecanismos para criao de novos tipos de dados a partir de tipos j existentes. Um desses mecanismos permite a criao de vectores. Os vectores so todos derivados de uma mesma classe do ambiente .NET, o que significa compartilhar vrias operaes, mtodos e atributos. Os objetos e vetores so necessariamente alocados dinamicamente na memria heap (rea de memria reservada) com o uso do operador new.

    Os gabaritos no so suportados, mas a linguagem possui um suporte abrangente a generics. Nela podem se usar tipos genricos para a maximizao da reutilizao de cdigo, segurana de tipo, e desempenho. A utilizao mais frequente para a criao de classes. Pode criar as suas prprias interfaces genricas, mtodos, classes, eventos e delegates. As classes genricas podem ser utilizadas para permitir acesso aos mtodos usando tipos de dados especficos. Informaes sobre os tipos usados em um tipo de dados genrico podem ser obtidas em tempo de execuo por meio de reflexo.

    5.1.4 Bibliotecas

    Ao contrrio das outras linguagens de programao, nenhuma implementao de C# atualmente inclui qualquer conjunto de bibliotecas de classes ou funes. Mesmo assim, esta linguagem est muito vinculada plataforma .NET, da qual obtm as suas classes ou funes de execuo. O cdigo organizado num conjunto de espaos de nomes que agrupam as classes com funes semelhantes. Por exemplo, System.Windows.Forms contm o sistema Windows Forms; System.Console usado para entrada/sada de dados.

    Um nvel de organizao superior fornecido pelo conceito de montador, que pode ser um simples arquivo ou mltiplos arquivos ligados juntos que podem conter muitos espaos de nomes ou objetos. Programas que precisam de classes para realizar uma funo em particular podem se referenciar aos montadores como System.Drawing.dll e System.Windows.Forms.dll assim como a biblioteca core(conhecida como mscorlib.dll na implementao da Microsoft).

    5.1.5 Normalizao

    A Microsoft submeteu o C# ECMA para uma padronizao formal. Em Dezembro de 2001 a associao liberou a especificao ECMA-334Especificao da Linguagem C#. Em 2003 tornou-se um padro ISO (ISO/IEC 23270). H algumas implementaes em desenvolvimento, destacando-se a Mono, implementao open source da Novell, o dotGNU e o Portable.NET, implementaes da Free Software Foundation, e o BDS 2008, implementao da CodeGear.

    A Microsoft anunciou planos de adicionar o suporte a tipos parciais, generics e outras caractersticas. A padronizao pela ECMA/ISO destas caractersticas foi

  • 30

    solicitada, mas ainda no so parte da verso padro da linguagem.

    5.2 Ferramentas

    5.2.1 ASTAH

    uma das ferramentas grtis para UML mais poderosas disponveis atualmente. Com caractersticas que no so encontradas nas outras ferramentas grtis, como adicionar mtodos no diagrama de sequncia e a alterao se refletir no diagrama de classes. O ASTAH a evoluo do JUDE, e no possui um apelo grfico to bom quanto o Poseidon, ou tantas funcionalidades como Rational Rose, mas a performance impressiona.

    5.2.2 brModelo

    uma ferramenta excelente ferramenta criada para facilitar a criao de modelos relacionais de um banco de dados. O aplicativo foi desenvolvido no com intuito de criar concorrncia com o famoso DBDesigner, mas sim para mostrar outra forma de modelagem relacional.

    O programa foi desenvolvido como trabalho de concluso de ps-graduao e tem como base a metodologia defendida por Carlos A. Heuser, autor do livro Projeto de Banco de Dados. Esta ferramenta muito utilizada na rea acadmica pelas mais diversas faculdades e universidades.

    5.2.3 Banco de Dados PostgresSQL

    O sistema gerenciador de banco de dados PostgreSQL teve seu incio na Universidade de Berkeley, na Califrnia, em 1986. Na poca, um programador chamado Michael Stonebraker liderou um projeto para a criao de um servidor de banco de dados relacionais chamado Postgres, oriundo de um outro projeto da mesma instituio denominado Ingres. Essa tecnologia foi ento comprada pela Illustra, empresa posteriormente adquirida pela Informix. Porm, mesmo diante disso, dois estudantes de Berkeley (Jolly Chen e Andrew Yu) compatibilizaram o Postgres linguagem SQL. Este projeto recebeu o nome de Postgres95.

    Em 1996, quando o projeto estava estvel, o banco de dados recebeu o nome de PostgreSQL. No entanto, enquanto ainda possua o nome Postgres95, o banco de dados teve vrias mudanas. O seu cdigo foi totalmente revisado e a linguagem SQL foi definida como padro.

    Tecnicamente falando, o PostgreSQL um banco de dados relacional e orientado a objetos. Um de seus atrativos possuir recursos comuns a banco de

  • 31

    dados de grande porte, o que o deixa apto a trabalhar, inclusive, com operaes de misso crtica. Alm disso, trata-se de um banco de dados verstil, seguro, gratuito e de cdigo aberto (disponvel sob uma).

    O PostgreSQL roda em todos os grandes sistemas operacionais, incluindo GNU/Linux, Unix (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), e MS Windows. totalmente compatvel com ACID, tem suporte completo a chaves estrangeiras, junes (JOINs), vises, gatilhos e procedimentos armazenados (em mltiplas linguagens). Inclui a maior parte dos tipos de dados do ISO SQL:1999, incluindo INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, e TIMESTAMP. Suporta tambm o armazenamento de objetos binrios, incluindo figuras, sons ou vdeos. Possui interfaces nativas de programao para C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, entre outros, e uma excepcional documentao.

    Como um banco de dados de nvel corporativo, o PostgreSQL possui funcionalidades sofisticadas como o controle de concorrncia multiversionado (MVCC, em ingls), recuperao em um ponto no tempo (PITR em ingls), tablespaces, replicao assncrona, transaes agrupadas (savepoints), cpias de segurana a quente (online/hot backup), um sofisticado planejador de consultas (otimizador) e registrador de transaes sequencial (WAL) para tolerncia a falhas.

    Suporta conjuntos de caracteres internacionais, codificao de caracteres multibyte, Unicode e sua ordenao por localizao, sensibilidade a caixa (maisculas e minsculas) e formatao. altamente escalvel, tanto na quantidade enorme de dados que pode gerenciar, quanto no nmero de usurios concorrentes que pode acomodar. Existem sistemas ativos com o PostgreSQL em ambiente de produo que gerenciam mais de 4TB de dados. Entre suas caractersticas, tem-se:

    Compatibilidade multi-plataforma, ou seja, executa em vrios sistema operacionais, como Windows, Mac OS X, Linux e outras variantes de Unix;

    Compatibilidade com vrias linguagens, entre elas, Java, PHP, Python, Ruby, e C/C++;

    Base de dados de tamanho ilimitado; Tabelas com tamanho de at 32 TB; Quantidade de linhas de at 1.6 TB ilimitada; Campos de at 1 GB; Suporte a recursos como triggers, views, stored procedures, SSL, MVCC,

    schemas, transactions, savepoints, referential integrity e expresses regulares;

    Instrues em SQL, como indica o nome.

    5.2.4 Microsoft .Net Framework

    O .NET Framework uma iniciativa da empresa Microsoft, que visa uma plataforma nica para desenvolvimento e execuo de sistemas e aplicaes. Todo e qualquer cdigo gerado para .NET, pode ser executado em qualquer dispositivo

  • 32

    que possua um framework de tal plataforma. A plataforma .NET executada sobre uma Common Language Runtime - CLR (Ambiente de Execuo Independente de Linguagem) interagindo com um Conjunto de Bibliotecas Unificadas (framework). Esta CLR capaz de executar atualmente mais de 20 diferentes linguagens de programao, (C#, VB.NET,C++ dentre outras) interagindo entre si como se fossem uma nica linguagem. Esta plataforma permite a execuo, construo e desenvolvimento de Web Services (Aplicaes Web) de forma integrada e unificada.

    O .NET framework 4, usado em nosso sistema, apresenta diversas funcionalidades em relao as verses anteriores, dentre elas:

    Execuo mais rpida: Garbage colector mais rpido, NGen requerendo menos RAM para trabalhar, melhorias na performance de pool de threads, objetos para checagem de segurana em cache.

    Novas classes no Base Class Library; Integrao total do modelo de programao indiferente fonte de dados do

    LINQ introduzida nas linguagens e no framework; Servios baseados em Workflow para promover servios durveis, com longo

    perodo de execuo; Web 2.0 mais amigvel e servios WCF usando AJAX; Ferramentas para o desenvolvimento de aplicaes WF e WCF; API para RSS e ATOM; Suporte "Patial Trust" para servios WCF.NET Framework 4.0 Suporte a programao paralela com o Task Parallel Library (TPL) e Parallel

    LINQ; O Dynamic Language Runtime (DLR) embutido, facilitando a utilizao de

    linguagens dinmicas; Melhorias no WPF como suporte aos recursos do Windows 7, desempenho e

    renderizao de textos.

    5.2.5 Visual Studio 2010

    O Microsoft Visual Studio um pacote de programas da Microsoft para desenvolvimento de software especialmente dedicado ao .NET Framework e s linguagens Visual Basic (VB), C, C++, C# e J#. Tambm um grande produto de desenvolvimento na rea web, usando a plataforma do ASP.NET. As linguagens com maior frequncia nessa plataforma so: VB.NET (Visual Basic.Net) e o C.

    O Visual Studio possui diversas edies no mercado:

    Visual Studio 97: Esta verso foi desenvolvida em 1997. Havia duas edies deste produto: A edio Professional (profissional) e Enterprise (empresarial). Esta verso inclua o Visual Basic 5.0, Visual C++ 5.0, Visual J++ e Visual FoxPro 5.0.

    Visual Studio 6.0: Esta verso foi publicada em 1998. Esta contm a verso mais conhecida e usada no mundo, do Visual Basic e do Visual C++ (6.0). At essa verso no tinha o .NET Framework. Muitos ainda usam o VS 6.0 porque o que se faz nele roda em todas as verses de Windows,

  • 33

    j nos novos necessrio ter o .NET Framework, o que aumenta bastante o tamanho dos instaladores.

    Visual Studio.NET: Esta uma verso focada no desenvolvimento da plataforma .NET. Inclui o Visual C# e o Visual Basic .NET.

    Visual Studio 2008: Lanada em Fevereiro de 2007, junto com as verses finais dos softwares Windows Server 2008 e o SQL Server 2008. O Visual Studio 2008 se baseia em trs pilares para proporcionar melhor experincia para os programadores: Melhorias na produtividade do desenvolvedor; Gerenciamento do ciclo de vida do aplicativo; e Utilizao das mais recentes tecnologias.

    Visual Studio 2010: Em 12 de Abril de 2010 a Microsoft lanou o Visual Studio 2010, de nome de cdigo Dev10, e a .NET Framework 4. Foi lanado com o objetivo de ser a IDE mais completa disponvel no mercado. Para isso conta com suporte a desenvolvimento de aplicativos Web, aplicativos para Windows Phone, SharePoint alm de aprimorar os j conhecidos, Windows Forms, Web Forms e tambm plataformas como o Microsoft XNA. Oferece IntelliTrace, Gerenciamento de Ciclo de Vida de Aplicativos (ALM), uma nova interface desenvolvida com WPF (Windows Presentation Foundation), para tornar a IDE mais intuitiva, sistema de busca muito mais eficaz, dentre outros.

    A verso Visual Studio 2010 foi a escolhida para ser utilizada em nosso projeto, muito pela facilidade de uso e principalmente pela sua compatibilidade.

    5.3 Sobre a Rede

    5.3.1 Wireless lan Rede Sem Fios

    As redes locais sem fio (WLAN) proporcionam a mesma funcionalidade que as redes LAN com cabo, porm eliminam a necessidade de instalar cabos e outros equipamentos de rede.

    Estas redes WLAN no requerem cabos para transmitir sinais, pois utilizam ondas de rdio ou infravermelho para enviar pacotes de dados pelo ar. A maioria das redes WLAN utiliza a tecnologia de espectro distribudo, a qual oferece uma largura de banda limitada, compartilhada com outros dispositivos do espectro.

    As redes Wireless LAN permitem ampliar uma estrutura de rede empresarial ou instalar uma estrutura de rede para pequenas empresas sem necessitar da instalao de cabos.

    As solues para redes sem fios baseiam-se num equipamento cliente - PC card ou placa PCI - que pode ser inserida com toda a facilidade no seu desktop, porttil ou PC de bolso (necessita de uma expansion pack PCMCIA), e pontos de acesso que efetuam a ligao sem fios rede. Para Pcs com capacidade USB, bastar ligar o dispositivo cliente, para uma fcil conectividade.

    Vantagens:

  • 34

    Compatibilidade comprovada - Compatibilidade total com plataformas standard da indstria, protocolos de rede chave e todos os principais sistemas operativos.

    Segurana - A tecnologia Wired Equivalent Privacy (WEP) de 128 bits que estes produtos integram, assegura mltiplos nveis de segurana informao.

    Escalabilidade simples - Adicione novos utilizadores rpida e facilmente. Equipe os novos Pcs com placas LAN sem fios para um acesso imediato em tempo real.

    Eficincia - A tecnologia Wireless LAN torna mais fcil que nunca partilhar perifricos de computador a partir de qualquer ponto da rede.

    Configurao rpida e simples da rede - Sem cabos para instalar, as LAN sem fios podem ser utilizadas em locais aonde os cabos no chegam.

    Dessa forma, decidimos utilizar de recursos Wireless para compor a rede da Churrascaria Paiol. Utilizaremos um roteador D-LINK DIR-655 para a conexo primria com a internet e impressora, alm de dois roteadores D-LINK D-524 que sero configurados como Acess Point's, para repetir o sinal do roteador primrio, afim de expandir o alcance de nossa rede, para uso interno e transformando o ambiente da empresa em um Hot Spot, uma rea com Wi-Fi livre destinado a ser utilizado pelos clientes. Cada um destes roteadores ser ligado em um estabilizador de 300VA da Force Line, a fim de prevenir contra variaes da rede eltrica que podem danificar os aparelhos. Alm disso, em cada computador da rede ser instalada uma placa de rede PCI Wireless TL-WN951N TP-LINK, para garantir a conexo com os roteadores.

    5.4 Sobre o Sistema Operacional

    A questo de escolha de um sistema operacional determinada totalmente pelo perfil do usurio e usos que se pretende fazer dele. Estabelecidos esses parmetros, tem-se rapidamente o sistema ideal a ser utilizado. No entanto, devemos lembrar que o mercado de desenvolvimento de softwares est em franca expanso, estimulado pelo consumo e pelo desenvolvimento de hardwares cada vez mais poderosos. A evoluo do hardware e software, aliados s tendncias de mercado apontam para grandes mudanas, que podem determinar o futuro dos atuais sistemas operacionais. Fala-se em Sistema Operacional de Nuvem ou Computao nas Nuvens, no qual ele no ser mais executado na mquina, mas acessado atravs da internet.

    A grande tendncia do momento este termo computao nas nuvens ou cloud computing (em ingls). Este termo surgiu pelo fato de a computao estar mudando de rumo, hoje voc no v mais como antigamente aquela vontade imensa de comprar um super computador, hoje o que voc mais precisa, e o que mais precisar futuramente, ser de mobilidade, portabilidade. Com isto os super computadores tero os seus destinos a quem realmente os precisa, mas os

  • 35

    usurios comuns no os precisaro mais, tudo ser baseado na internet, como hoje j est sendo feito, o grande centro das atenes nos dias atuais a internet, em alguns anos, talvez meses, voc utilizar seu computador na internet, ter o espao que precisar para guardar seus arquivos como documentos, fotos, vdeos, msicas e at softwares na internet.

    Computadores tero o preo reduzido, cada vez mais o preo das mquinas cair devido ao fato de que um computador para acessar a internet no necessita de muitos recursos, basta ter um processador simples, um pouco de memria que voc estar satisfeito com o resultado, com isto, voc ter mais mobilidade, pois os celulares da nova gerao (3G) tem acesso internet, e voc poder acessar os seus arquivos e documentos de qualquer lugar atravs da conexo a internet oferecida por seu celular.

    Com esta nova tendncia quem ganhar fora ser o sistema operacional LINUX, pois com a pouca necessidade de recursos, a maior sendo um browser, far com que grandes empresas como Microsoft comecem a ter preocupaes quanto a seu futuro. H grande necessidade de se estar conectado far com que softwares como sistemas operacionais e outros tendam a migrar para a internet, tornando o desktop de sua mquina online, e assim os sistemas que estaro rodando nas mquinas sejam apenas para suportar seu browser.

    Porm, ao pensarmos na estrutura, recursos, demanda e facilidade necessria ao bom funcionamento da Churrascaria Paiol, foi decidido que o sistema operacional que ser utilizado ser o Windows, visto as vantagens apresentadas anteriormente, e em grande parte devido a facilidade de manuseio por parte dos usurios finais de nosso programa.

  • 36

    6 DIAGRAMAS

    6.1 Diagrama De Casos De Uso

  • 37

    6.2 Diagrama de Classes

  • 38

    6.3 Diagrama de Entidade Relacionamento Conceitual

  • 39

    6.4 Diagrama de Entidade Relacionamento Lgico (Classes)

  • 40

    6.5 Diagrama de Sequncia (Classes)

  • 41

  • 42

    6.6 Diagrama de Atividades

  • 43

    7 TELAS DO SISTEMA

    7.1 Prottipos

  • 44

  • 45

  • 46

  • 47

  • 48

    7.2 Telas Finais

  • 49

  • 50

  • 51

  • 52

  • 53

  • 54

  • 55

  • 56

  • 57

  • 58

  • 59

  • 60

  • 61

  • 62

  • 63

  • 64

    8 CDIGO FONTE

    using System.Reflection;using System.Runtime.CompilerServices;using System.Runtime.InteropServices;

    // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information// associated with an assembly.[assembly: AssemblyTitle("Paiol.Controle")][assembly: AssemblyDescription("")][assembly: AssemblyConfiguration("")][assembly: AssemblyCompany("Microsoft")][assembly: AssemblyProduct("Paiol.Controle")][assembly: AssemblyCopyright("Copyright Microsoft 2012")][assembly: AssemblyTrademark("")][assembly: AssemblyCulture("")]

    // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type.[assembly: ComVisible(false)]

    // The following GUID is for the ID of the typelib if this project is exposed to COM[assembly: Guid("b99dc6c1-bea3-430a-9dc1-417b5a3efaab")]

    // Version information for an assembly consists of the following four values://// Major Version// Minor Version // Build Number// Revision//// You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below:// [assembly: AssemblyVersion("1.0.*")][assembly: AssemblyVersion("1.0.0.0")][assembly: AssemblyFileVersion("1.0.0.0")]

  • 65

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Paiol.Modelo;

    namespace Paiol.Controle{ public class AcessoUtil { public static Acesso GetAcesso(Usuario usuario, string programa) { return Acesso.Queryable.FirstOrDefault(x => x.usuario == usuario && x.programa == programa); } public static bool VerificaAcessoConsulta(Usuario usuario, string programa) { if (usuario.administrador) return true;

    var acesso = GetAcesso(usuario, programa); if (acesso == null) return false;

    return acesso.consulta; } public static bool VerificaAcessoInclusao(Usuario usuario, string programa) { if (usuario.administrador) return true;

    var acesso = GetAcesso(usuario, programa); if (acesso == null) return false;

    return acesso.inclusao; } public static bool VerificaAcessoAlteracao(Usuario usuario, string programa) { if (usuario.administrador) return true;

    var acesso = GetAcesso(usuario, programa); if (acesso == null) return false;

    return acesso.alteracao; } public static bool VerificaAcessoRemocao(Usuario usuario, string programa) { if (usuario.administrador) return true;

    var acesso = GetAcesso(usuario, programa); if (acesso == null) return false;

    return acesso.remocao; }

  • 66

    }}

  • 67

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord;using System.Reflection;using Castle.ActiveRecord.Framework;using Castle.ActiveRecord.Framework.Config;using NHibernate;

    namespace Paiol.Controle{ public class Conexao { public string server { get; set; }

    public string port { get; set; }

    public string database { get; set; }

    public string user { get; set; }

    public string password { get; set; }

    public Conexao(IniFile conf) { server = conf.IniReadValue("conexao", "server"); port = conf.IniReadValue("conexao", "port"); database = conf.IniReadValue("conexao", "database"); user = conf.IniReadValue("conexao", "user"); password = conf.IniReadValue("conexao", "password"); }

    public IConfigurationSource GetConfiguracaoPostgreSQL() { IDictionary properties = new Dictionary();

    properties.Add("connection.driver_class", "NHibernate.Driver.NpgsqlDriver"); properties.Add("dialect", "NHibernate.Dialect.PostgreSQLDialect"); properties.Add("connection.provider", "NHibernate.Connection.DriverConnectionProvider"); properties.Add("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"); properties.Add("connection.connection_string", "Server=" + this.server + ";Port=" + this.port + ";Database=" + this.database + ";User ID=" + this.user + ";Password=" + this.password);

    InPlaceConfigurationSource source = new InPlaceConfigurationSource(); source.Add(typeof(ActiveRecordBase), properties);

    return source; }

    public void Conectar() { ActiveRecordStarter.Initialize(new Assembly[] { Assembly.Load("Paiol.Modelo") }, GetConfiguracaoPostgreSQL());

  • 68

    using (var session = CreateSession()) { } }

    public static ISession CreateSession() { return ActiveRecordMediator.GetSessionFactoryHolder().CreateSession(typeof(ActiveRecordBase)); } }}

  • 69

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices;using System.IO;

    namespace Paiol.Controle{ /// /// Create a New INI file to store or load data /// http://www.codeproject.com/Articles/1966/An-INI-file-handling-class-using-C /// public class IniFile { public string path;

    [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

    /// /// INIFile Constructor. /// /// public IniFile(string INIPath) { path = INIPath; } /// /// Write Data to the INI File /// /// /// Section name /// /// Key Name /// /// Value Name public void IniWriteValue(string Section, string Key, string Value) { WritePrivateProfileString(Section, Key, Value, this.path); }

    /// /// Read Data Value From the Ini File /// /// /// /// /// public string IniReadValue(string Section, string Key) { StringBuilder temp = new StringBuilder(255); int i = GetPrivateProfileString(Section, Key, "", temp, 255, this.path);

  • 70

    return temp.ToString();

    } }}

  • 71

    using System.Reflection;using System.Runtime.CompilerServices;using System.Runtime.InteropServices;

    // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information// associated with an assembly.[assembly: AssemblyTitle("Paiol.Modelo")][assembly: AssemblyDescription("")][assembly: AssemblyConfiguration("")][assembly: AssemblyCompany("Microsoft")][assembly: AssemblyProduct("Paiol.Modelo")][assembly: AssemblyCopyright("Copyright Microsoft 2012")][assembly: AssemblyTrademark("")][assembly: AssemblyCulture("")]

    // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type.[assembly: ComVisible(false)]

    // The following GUID is for the ID of the typelib if this project is exposed to COM[assembly: Guid("d051aaa6-f57e-475c-bc60-4b9f4f8680f0")]

    // Version information for an assembly consists of the following four values://// Major Version// Minor Version // Build Number// Revision//// You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below:// [assembly: AssemblyVersion("1.0.*")][assembly: AssemblyVersion("1.0.0.0")][assembly: AssemblyFileVersion("1.0.0.0")]

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord;using Castle.ActiveRecord.Linq;

    namespace Paiol.Modelo{ [ActiveRecord("acesso")] public class Acesso : ActiveRecordLinqBase { [PrimaryKey("codigo", Generator = PrimaryKeyType.Sequence, SequenceName = "sequence_acesso")] public long codigo { get; set; }

    [BelongsTo("usuario", NotNull = true)] public Usuario usuario { get; set; }

    [Property("programa", NotNull = true)]

  • 72

    public string programa { get; set; }

    [Property("consulta", NotNull = true)] public bool consulta { get; set; }

    [Property("inclusao", NotNull = true)] public bool inclusao { get; set; }

    [Property("alteracao", NotNull = true)] public bool alteracao { get; set; }

    [Property("remocao", NotNull = true)] public bool remocao { get; set; } }}

  • 73

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord;using Castle.ActiveRecord.Linq;

    namespace Paiol.Modelo{ [ActiveRecord("cliente")] public class Cliente : ActiveRecordLinqBase { [PrimaryKey("codigo", Generator = PrimaryKeyType.Sequence, SequenceName = "sequence_cliente")] public long codigo { get; set; }

    [Property("tipo", NotNull = true)] public int tipo { get; set; }

    [BelongsTo("pessoa", NotNull = true)] public Pessoa pessoa { get; set; }

    public string nome { get { return pessoa != null ? pessoa.nome : string.Empty; } }

    public string cpfCnpj { get { return pessoa != null ? (pessoa is PessoaFisica ? ((PessoaFisica)pessoa).cpf : ((PessoaJuridica)pessoa).cnpj) : string.Empty; } }

    public override string ToString() { return string.IsNullOrEmpty(nome) ? codigo.ToString() : nome; } }}

  • 74

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord;using Castle.ActiveRecord.Linq;

    namespace Paiol.Modelo{ [ActiveRecord("endereco")] public class Endereco : ActiveRecordLinqBase { [PrimaryKey("codigo", Generator = PrimaryKeyType.Sequence, SequenceName = "sequence_endereco")] public long codigo { get; set; }

    [BelongsTo("pessoa", NotNull = true)] public Pessoa pessoa { get; set; }

    [Property("rua", NotNull = true)] public string rua { get; set; }

    [Property("numero", NotNull = true)] public string numero { get; set; }

    [Property("bairro", NotNull = true)] public string bairro { get; set; }

    [Property("cidade", NotNull = true)] public string cidade { get; set; }

    [Property("estado", NotNull = true)] public string estado { get; set; } }}

  • 75

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord;using Castle.ActiveRecord.Linq;

    namespace Paiol.Modelo{ [ActiveRecord("item_pedido")] public class ItemPedido : ActiveRecordLinqBase { [PrimaryKey("codigo", Generator = PrimaryKeyType.Sequence, SequenceName = "sequence_itempedido")] public long codigo { get; set; }

    [Property("quantidade", NotNull = true)] public double quantidade { get; set; }

    [Property("preco", NotNull = true)] public double preco { get; set; }

    [Property("total", NotNull = true)] public double total { get; set; }

    [BelongsTo("pedido", NotNull = true)] public Pedido pedido { get; set; }

    [BelongsTo("produto", NotNull = true)] public Produto produto { get; set; }

    public string nome { get { return produto != null ? produto.nome : string.Empty; } } }}

  • 76

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord;using Castle.ActiveRecord.Linq;

    namespace Paiol.Modelo{ [ActiveRecord("pedido")] public class Pedido : ActiveRecordLinqBase { [PrimaryKey("codigo", Generator = PrimaryKeyType.Sequence, SequenceName = "sequence_pedido")] public long codigo { get; set; }

    [Property("data", NotNull = true)] public DateTime data { get; set; }

    [BelongsTo("cliente", NotNull = true)] public Cliente cliente { get; set; }

    public string nome { get { return cliente != null ? cliente.nome : string.Empty; } }

    //private ItemPedido[] _itens = null; //public ItemPedido[] itens //{ // get // { // if (_itens == null && this.codigo > 0) // _itens = ItemPedido.Queryable.Where(x => x.pedido == this).OrderBy(x => x.codigo).ToArray();

    // return _itens; // } //} }}

  • 77

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord;using Castle.ActiveRecord.Linq;

    namespace Paiol.Modelo{ [ActiveRecord("pessoa"), JoinedBase] public class Pessoa : ActiveRecordLinqBase { [PrimaryKey("codigo", Generator = PrimaryKeyType.Sequence, SequenceName = "sequence_pessoa")] public long codigo { get; set; }

    [Property("nome", NotNull = true)] public string nome { get; set; } }}

  • 78

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord;using Castle.ActiveRecord.Linq;

    namespace Paiol.Modelo{ [ActiveRecord("pessoa_fisica")] public class PessoaFisica : Pessoa { [JoinedKey("pessoa")] public long pessoa { get; set; }

    [Property("cpf", NotNull = true)] public string cpf { get; set; }

    [Property("data_nascimento", NotNull = true)] public DateTime dataNascimento { get; set; }

    [Property("sexo", NotNull = true)] public int sexo { get; set; } }}

  • 79

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord;

    namespace Paiol.Modelo{ [ActiveRecord("pessoa_juridica")] public class PessoaJuridica : Pessoa { [JoinedKey("pessoa")] public long pessoa { get; set; }

    [Property("cnpj", NotNull = true)] public string cnpj { get; set; }

    [Property("nome_fantasia", NotNull = true)] public string nomeFantasia { get; set; } }}

  • 80

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord;using Castle.ActiveRecord.Linq;

    namespace Paiol.Modelo{ [ActiveRecord("produto")] public class Produto : ActiveRecordLinqBase { [PrimaryKey("codigo", Generator = PrimaryKeyType.Sequence, SequenceName = "sequence_produto")] public long codigo { get; set; }

    [Property("nome", NotNull = true)] public string nome { get; set; }

    [Property("preco", NotNull = true)] public double preco { get; set; }

    public override string ToString() { return nome; } }}

  • 81

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord;using Castle.ActiveRecord.Linq;

    namespace Paiol.Modelo{ [ActiveRecord("telefone")] public class Telefone : ActiveRecordLinqBase { [PrimaryKey("codigo", Generator = PrimaryKeyType.Sequence, SequenceName = "sequence_telefone")] public long codigo { get; set; }

    [Property("numero", NotNull = true)] public string numero { get; set; }

    [BelongsTo("pessoa", NotNull = true)] public Pessoa pessoa { get; set; } }}

  • 82

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Castle.ActiveRecord.Linq;using Castle.ActiveRecord;using System.Security.Cryptography;

    namespace Paiol.Modelo{ [ActiveRecord("usuario")] public class Usuario : ActiveRecordLinqBase { [PrimaryKey("codigo", Generator = PrimaryKeyType.Sequence, SequenceName = "sequence_usuario")] public long codigo { get; set; }

    [Property("nome", NotNull = true)] public string nome { get; set; }

    [Property("senha")] public string senha { get; set; }

    [Property("administrador")] public bool administrador { get; set; }

    public static string CalculateMD5Hash(string input) {

    // Primeiro passo, calcular o MD5 hash a partir da string MD5 md5 = System.Security.Cryptography.MD5.Create(); byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input); byte[] hash = md5.ComputeHash(inputBytes);

    // Segundo passo, converter o array de bytes em uma string haxadecimal StringBuilder sb = new StringBuilder();