Buscar

Portfolio Individual, Desenvolvimento de Sistemas II, 4º Semestre 2015

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

�PAGE �
SUMÁRIO
31	INTRODUÇÃO	�
42	OBJETIVO	�
53	DESENVOLVIMENTO	�
26REFERÊNCIAS	�
26< http://www.ufrgs.br/engcart/PDASR/linguagens.html>	�
27<http://www.dsc.ufcg.edu.br/~sampaio/cursos/2007.1/Graduacao/SI-II/Uml/diagramas/diagramas.htm>	�
��
INTRODUÇÃO
O conteúdo a seguir abordará, viabilização do desenvolvimento de sistema de informação analisando, incrementar o conhecimento em Análise Orientada a Objetos, Banco de Dados, Programação Orientada a Objetos e programação para Web, e as linguagens mais usadas para programação web, como o PHP, Java, Javascript e C#, além de falar sobre os recursos de como programar com tais linguagens de programação, e Representações de como desenvolver POO.
OBJETIVO
. O objetivo principal no desenvolvimento desse trabalho é realmente apresentar as pesquisas voltadas ao tema proposto. Analisando as linguagens de programação e como elas são usadas, quais as mais requisitadas, como usar no desenvolvimento e na programação, as linguagens web mais requisitadas e os recursos das mesmas, e a Programação Orientada a Objeto, diagramas mais utilizados na UML, a quem se destina e como ele é usado, Banco de Dados, fazendo uma analogia do DER e MRN, assim fazendo um levanto de alguns requisitos para desenvolvimento, conhecendo um pouco de cada. 
DESENVOLVIMENTO
 4.1 Análise Orientada a Objetos II
 4.1.1 Nesse tópico faça um levantamento para identificar quais são os diagramas mais utilizados da UML, informe a quem ele se destina (equipe de desenvolvimento ou cliente) e como ele pode contribuir para o entendimento da proposta do sistema a ser desenvolvido.
4.1.2. Diagrama de Caso de Uso.
 Representa o conjunto de comportamentos de alto nível que o sistema deve executar para um determinado ator. É o diagrama mais simples, e não há necessidade de grandes detalhamentos.
A figura acima ilustra um caso de uso geral, mas é recomendado que eles sejam desenvolvidos para cada cenário. As setas de includes e extends, indicam, respectivamente, obrigatoriedade e opção de se realizar determinada ação.
 
 4.1.3. Diagrama de Classe
Representa uma coleção de classes e seus inter-relacionamentos.
O diagrama de classes apresenta elementos conectados por relacionamentos. Este diagrama representa o modelo da estrutura de um sistema orientado a objetos, demonstrando as classes, os tipos e os relacionamentos. É usado para exibir entidades do mundo real, além de elementos de análise e projeto.
É uma modelagem muito útil para o sistema, define todas as classes que o sistema
necessita possuir e é a base para a construção dos diagramas de comunicação, seqüência e estados. É uma representação da estrutura e relações das classes que servem de modelo para objetos.
 4.1.4. Diagrama de Objetos
Representa um retrato, em tempo de execução, dos objetos do software e seus inter-relacionamentos.
O diagrama de objetos é uma variação do diagrama de classes e utiliza quase a
mesma notação, com duas exceções: os objetos são escritos com seus nomes sublinhados e todas as instâncias num relacionamento são mostradas. É como se fosse o perfil do sistema em um certo momento de sua execução, mostrando os objetos que foram instanciados das classes.
 4.1.5. Diagrama de Colaboração
Representa uma coleção de objetos que trabalham em conjunto para atender algum comportamento do sistema.
A grande diferença entre um diagrama de colaboração e um de seqüência consiste no fato de que o tempo não é mais representado por linhas verticais, mas sim através de uma numeração, que pode ser de duas formas:
simples (1,2,3,...)
composta (1.1, 1.2, 1.2.1, ...)
Um objeto é representado como um retângulo, contendo no seu interior um rótulo, que informa o nome do objeto e o nome da classe, separados por dois pontos. Detalhe: ambos podem ser omitidos.
 4.1.6. Diagrama de Sequência
Representa uma perspectiva, orientada por tempo, da colaboração entre os objetos.
 4.1.7. Diagrama de Atividades
Representa o fluxo de tarefas que podem ser executadas pelo sistema ou por um ator.
 
O objetivo do diagrama de atividades é mostrar o fluxo de atividades em um único processo. O diagrama mostra como uma atividade depende uma da outra.
Um diagrama de atividade pode ser regiões denominadas swimlanes. Estas regiões esão associadas a um objeto do modelo. Desta forma, dentro de cada região, encontram-se as atividades relativas ao objeto da região.
As atividades são conectadas através de arcos (transições), que mostram as dependências entre elas.
 4.1.8. Diagrama de Estado
Em um diagrama de estado, um objeto possui um comportamento e um estado.
O estado de um objeto depende da atividade na qual ele está processando.
Um diagrama de estado mostra os possíveis estados de um objeto e as transações responsáveis pelas suas mudanças de estado.
Exemplo:
Descrição do exemplo: Modelagem do sistema de login. Para que o usuário seja autenticado, ele deve fornecer dois valores: SSN (Social Security Number) e o PIN (Personal ID Number). Após a submissão é feita uma validação.
Diagrama de estado para o objeto Login. 
 4.2. Banco de Dados II 
Nesse tópico faça levantamento descrevendo e exemplificando sobre MRN e crie um DER devidamente aplicado o MRN. 
 4.2.1 Modelo Relacional Normalizado-MRN 
O que é o Modelo Relacional Normalizado –MRN?
 Para que serve?
Qual a funcionalidade do MRN?
Quais são os objetivos?
Quais são os ganhos ao fazer a normalização do Banco de Dados?
 O modelo relacional Normalizado é um modelo de dados, adequado a ser o modelo subjacente de um Sistema Gerenciador de Banco de Dados (SGBD), que se baseia no princípio em que todos os dados estão guardados em tabelas (ou, matematicamente falando, relações). Toda sua definição é teórica e baseada na lógica de predicados e na teoria dos conjuntos.
O conceito foi criado por Edgar Frank Codd em 1970, sendo descrito no artigo "Relational Model of Data for Large Shared Data Banks". Na verdade, o modelo relacional foi o primeiro modelo de dados descrito teoricamente, os bancos de dados já existentes passaram então a ser conhecidos como (modelo hierárquico, modelo em rede ou Codasyl e modelo de listas invertidas).
O MRN apareceu devido às seguintes necessidades: aumentar a independência dos dados nos sistemas operacionais de banco de dados; prover um conjunto de funções apoiadas em álgebra relacional para armazenamento e recuperação de dados; permitir processamento AD HOC(Em engenharia de software, a expressão ad hoc é utilizada para designar ciclos completos de construção de softwares que não foram devidamente projetado em razão da necessidade de atender a uma demanda específica do usuário, ligada a prazo, qualidade ou custo). O modelo relacional revelou-se ser o mais flexível e adequados ao solucionar os vários problemas que se colocam no nível de concepção e implementação da Base de Dados. A estrutura fundamental do modelo relacional é a relação (tabela). Uma relação e construída por um ou mais atributos (campos) que traduzem o tipo de dados a armazenar. Cada instancia do esquema (linha) e chamada de tupla (registro). O modelo relaciona não tem caminhos pré-definidos para se fazer acesso aos dados como nos modelos que o procedem. O modelo relacional implementa estruturas de dados organizados em relações. Porem, para trabalhar com essas tabelas, algumas restrições precisam ser
impostas para evitar aspectos indesejáveis, como: repetição de informação, incapacidade de representar parte da informação e perda de informação. Essas restrições são: Integridade referencial, chaves e integridades de junções de relações.
 Tabela de Modelo Relacional normalizado – Cliente Conta corrente
O Modelo Entidade Relacionamento é a base para a criação de um banco de dados.
Para realizarmos um projeto de banco de dados, podemos dividi-lo em três partes: inicialmente o modelo conceitual, depois o modelo lógico, e finalmente o modelo físico.
Realizar os três modelos é de extrema importância para que o analista de sistemas compreenda a base de dados que ele vai criar. O administrador de banco de dados (DBA) e o administrador de dados(AD) conseque separar muito bem esses três modelos.
O primeiro passo e fazer o modelo conceitual; depois que ele já estiver completo podemos transformá-lo em um modelo lógico, em que a estrutura fica mais evidente para os analistas de sistemas e programadores.
Uma vez definido qual o SGBD a se utilizado , podemos passar esse modelo lógico para o físico. Com o modelo físico concluído, já e possível escrever os comandos necessários para a criação do esquema no banco de dados.
Hoje em dia existem ferramentas CASE que auxiliam o dia a dia dos analistas , DBAs e ADs.
 4.3. Programação Orientada a Objetos.
 4.3.1. Nesse tópico faça levantamento descrevendo e exemplificando Programação Orientada a Objetos.
O desenvolvimento de software é extremamente amplo. Nesse mercado, existem diversas linguagens de programação, que seguem diferentes paradigmas. Um desses paradigmas é a Orientação a Objetos, que atualmente é o mais difundido entre todos. Isso acontece porque se trata de um padrão que tem evoluído muito, principalmente em questões voltadas para segurança e reaproveitamento de código, o que é muito importante no desenvolvimento de qualquer aplicação moderna.
A Programação Orientada a Objetos (POO) diz respeito a um padrão de desenvolvimento que é seguido por muitas linguagens, como C# e Java. A seguir, iremos entender as diferenças entre a POO e a Programação Estruturada, que era muito utilizada há alguns anos, principalmente com a linguagem C. Esse padrão se baseia em quatro pilares que veremos ao longo desse artigo. Além disso, a POO diversas vantagens em sua utilização, que também serão vistas e explicadas.
Programação Estruturada vs Programação Orientada a Objetos
Na Figura 1 vemos uma comparação muito clara entre a programação estruturada e a programação orientada a objetos no que diz respeito aos dados. Repare que, no paradigma estruturado, temos procedimentos (ou funções) que são aplicados globalmente em nossa aplicação. No caso da orientação a objetos, temos métodos que são aplicados aos dados de cada objeto. Essencialmente, os procedimentos e métodos são iguais, sendo diferenciados apenas pelo seu escopo.
>Estruturada x Orientação a Objetos
Figura 1. Estruturada x Orientação a Objetos
A linguagem C é a principal representante da programação estruturada. Se trata de uma linguagem considerada de baixo nível, que atualmente não é utilizada para projetos muito grandes. A sua principal utilização, devido ao baixo nível, é em programação para sistemas embarcados ou outros em que o conhecimento do hardware se faz necessário para um bom programa.
Essa colocação nos traz a um detalhe importante: a programação estruturada, quando bem feita, possui um desempenho superior ao que vemos na programação orientada a objetos. Isso ocorre pelo fato de ser um paradigma sequencial, em que cada linha de código é executada após a outra, sem muitos desvios, como vemos na POO. Além disso, o paradigma estruturado costuma permitir mais liberdades com o hardware, o que acaba auxiliando na questão desempenho.
Entretanto, a programação orientada a objetos traz outros pontos que acabam sendo mais interessantes no contexto de aplicações modernas. Como o desempenho das aplicações não é uma das grandes preocupações na maioria das aplicações (devido ao poder de processamento dos computadores atuais), a programação orientada a objetos se tornou muito difundida. Essa difusão se dá muito pela questão da reutilização de código e pela capacidade de representação do sistema muito mais perto do que veríamos no mundo real.
Veremos em detalhes esses e outros pontos que dizem respeito a programação orientada a objetos. Como desenvolvedores, é nossa missão entender quais são as vantagens e desvantagens de cada um dos paradigmas de programação e escolhermos o melhor para nossa aplicação. A escolha da linguagem também deve estar presente nessa escolha.
 4.3.2. Os 4 pilares da Programação Orientada a Objetos
Para entendermos exatamente do que se trata a orientação a objetos, vamos entender quais são os requerimentos de uma linguagem para ser considerada nesse paradigma. Para isso, a linguagem precisa atender a quatro tópicos bastante importantes:
 4.3.2.1.Abstração
A abstração consiste em um dos pontos mais importantes dentro de qualquer linguagem Orientada a Objetos. Como estamos lidando com uma representação de um objeto real (o que dá nome ao paradigma), temos que imaginar o que esse objeto irá realizar dentro de nosso sistema. São três pontos que devem ser levados em consideração nessa abstração.
O primeiro ponto é darmos uma identidade ao objeto que iremos criar. Essa identidade deve ser única dentro do sistema para que não haja conflito. Na maior parte das linguagens, há o conceito de pacotes (ou namespaces). Nessas linguagens, a identidade do objeto não pode ser repetida dentro do pacote, e não necessariamente no sistema inteiro. Nesses casos, a identidade real de cada objeto se dá por ..
A segunda parte diz respeito a características do objeto. Como sabemos, no mundo real qualquer objeto possui elementos que o definem. Dentro da programação orientada a objetos, essas características são nomeadas propriedades. Por exemplo, as propriedades de um objeto “Cachorro” poderiam ser “Tamanho”, “Raça” e “Idade”.
Por fim, a terceira parte é definirmos as ações que o objeto irá executar. Essas ações, ou eventos, são chamados métodos. Esses métodos podem ser extremamente variáveis, desde “Acender()” em um objeto lâmpada até “Latir()” em um objeto cachorro.
 4.3.2.2. Encapsulamento
O encapsulamento é uma das principais técnicas que define a programação orientada a objetos. Se trata de um dos elementos que adicionam segurança à aplicação em uma programação orientada a objetos pelo fato de esconder as propriedades, criando uma espécie de caixa preta.
A maior parte das linguagens orientadas a objetos implementam o encapsulamento baseado em propriedades privadas, ligadas a métodos especiais chamados getters e setters, que irão retornar e setar o valor da propriedade, respectivamente. Essa atitude evita o acesso direto a propriedade do objeto, adicionando uma outra camada de segurança à aplicação.
Para fazermos um paralelo com o que vemos no mundo real, temos o encapsulamento em outros elementos. Por exemplo, quando clicamos no botão ligar da televisão, não sabemos o que está acontecendo internamente. Podemos então dizer que os métodos que ligam a televisão estão encapsulados.
 4.3.2.3. Herança
O reuso de código é uma das grandes vantagens da programação orientada a objetos. Muito disso se dá por uma questão que é conhecida como herança. Essa característica otimiza a produção da aplicação em tempo e linhas de código.
Para entendermos essa característica, vamos imaginar uma família: a criança, por exemplo, está herdando características de seus pais. Os pais, por sua vez, herdam algo dos avós, o que faz com que a criança também o faça, e assim sucessivamente. Na orientação a objetos, a questão é exatamente assim, como mostra a Figura 2. O objeto abaixo na hierarquia
irá herdar características de todos os objetos acima dele, seus “ancestrais”. A herança a partir das características do objeto mais acima é considerada herança direta, enquanto as demais são consideradas heranças indiretas. Por exemplo, na família, a criança herda diretamente do pai e indiretamente do avô e do bisavô.
Herança na orientação a objetos
Figura 2. Herança na orientação a objetos
A questão da herança varia bastante de linguagem para linguagem. Em algumas delas, como C++, há a questão da herança múltipla. Isso, essencialmente, significa que o objeto pode herdar características de vários “ancestrais” ao mesmo tempo diretamente. Em outras palavras, cada objeto pode possuir quantos pais for necessário. Devido a problemas, essa prática não foi difundida em linguagens mais modernas, que utilizam outras artimanhas para criar uma espécie de herança múltipla.
Outras linguagens orientadas a objetos, como C#, trazem um objeto base para todos os demais. A classe object fornece características para todos os objetos em C#, sejam criados pelo usuário ou não.
 4.3.2.4. Polimorfismo
Outro ponto essencial na programação orientada a objetos é o chamado polimorfismo. Na natureza, vemos animais que são capazes de alterar sua forma conforme a necessidade, e é dessa ideia que vem o polimorfismo na orientação a objetos. Como sabemos, os objetos filhos herdam as características e ações de seus “ancestrais”. Entretanto, em alguns casos, é necessário que as ações para um mesmo método seja diferente. Em outras palavras, o polimorfismo consiste na alteração do funcionamento interno de um método herdado de um objeto pai.
Como um exemplo, temos um objeto genérico “Eletrodoméstico”. Esse objeto possui um método, ou ação, “Ligar()”. Temos dois objetos, “Televisão” e “Geladeira”, que não irão ser ligados da mesma forma. Assim, precisamos, para cada uma das classes filhas, reescrever o método “Ligar()”.
Com relação ao polimorfismo, valem algumas observações. Como se trata de um assunto que está intimamente conectado à herança, entender os dois juntamente é uma boa ideia. Outro ponto é o fato de que as linguagens de programação implementam o polimorfismo de maneiras diferentes. O C#, por exemplo, faz uso de método virtuais (com a palavra-chave virtual) que podem ser reimplementados (com a palavra-chave override) nas classes filhas. Já em Java, apenas o atributo “@Override” é necessário.
Esses quatro pilares são essenciais no entendimento de qualquer linguagem orientada a objetos e da orientação a objetos como um todo. Cada linguagem irá implementar esses pilares de uma forma, mas essencialmente é a mesma coisa. Apenas a questão da herança, como comentado, que pode trazer variações mais bruscas, como a presença de herança múltipla. Além disso, o encapsulamento também é feito de maneiras distintas nas diversas linguagens, embora os getters e setters sejam praticamente onipresentes.
Principais vantagens da POO
A programação orientada a objetos traz uma ideia muito interessante: a representação de cada elemento em termos de um objeto, ou classe. Esse tipo de representação procura aproximar o sistema que está sendo criado ao que é observado no mundo real, e um objeto contém características e ações, assim como vemos na realidade. Esse tipo de representação traz algumas vantagens muito interessantes para os desenvolvedores e também para o usuário da aplicação. Veremos algumas delas a seguir.
A reutilização de código é um dos principais requisitos no desenvolvimento de software atual. Com a complexidade dos sistemas cada vez maior, o tempo de desenvolvimento iria aumentar exponencialmente caso não fosse possível a reutilização. A orientação a objetos permite que haja uma reutilização do código criado, diminuindo o tempo de desenvolvimento, bem como o número de linhas de código. Isso é possível devido ao fato de que as linguagens de programação orientada a objetos trazem representações muito claras de cada um dos elementos, e esses elementos normalmente não são interdependentes. Essa independência entre as partes do software é o que permite que esse código seja reutilizado em outros sistemas no futuro.
Outra grande vantagem que o desenvolvimento orientado a objetos traz diz respeito a leitura e manutenção de código. Como a representação do sistema se aproxima muito do que vemos na vida real, o entendimento do sistema como um todo e de cada parte individualmente fica muito mais simples. Isso permite que a equipe de desenvolvimento não fique dependente de uma pessoa apenas, como acontecia com frequência em linguagens estruturadas como o C, por exemplo.
A criação de bibliotecas é outro ponto que é muito mais simples com a orientação a objetos. No caso das linguagens estruturadas, como o C, temos que as bibliotecas são coleções de procedimentos (ou funções) que podem ser reutilizadas. No caso da POO, entretanto, as bibliotecas trazem representações de classes, que são muito mais claras para permitirem a reutilização.
Entretanto, nem tudo é perfeição na programação orientada a objetos. A execução de uma aplicação orientada a objetos é mais lenta do que o que vemos na programação estruturada, por exemplo. Isso acontece devido à complexidade do modelo, que traz representações na forma de classes. Essas representações irão fazer com que a execução do programa tenha muitos desvios, diferente da execução sequencial da programação estruturada. Esse é o grande motivo por trás da preferência pela linguagem C em hardware limitado, como sistemas embarcados. Também é o motivo pelo qual a programação para sistemas móveis como o Google Android, embora em Java (linguagem orientada a objetos), seja feita o menos orientada a objetos possível.
No momento atual em que estamos, tecnologicamente essa execução mais lenta não é sentida. Isso significa que, em termos de desenvolvimento de sistemas modernos, a programação orientada a objetos é a mais recomendada devido as vantagens que foram apresentadas. Essas vantagens são derivadas do modelo de programação, que busca uma representação baseada no que vemos no mundo real.
Exemplos de Linguagens Orientadas a Objetos
Há uma grande quantidade de linguagens de programação orientada a objetos no mercado atualmente. Nesse artigo, iremos apresentar 3 das mais utilizadas no momento: Java, C# e C++. Cada uma delas possui uma abordagem diferente do problema que as torna muito boas para alguns tipos de aplicações e não tão boas para outros.
Java
O Java é, muito provavelmente, a linguagem de programação mais utilizada no mercado atual. Auxiliado pela presença do JRE (Java Runtime Environment), ou variações dele, em quase todos os dispositivos eletrônicos do momento, a linguagem Java é um grande sucesso entre os desenvolvedores. O sucesso da linguagem aumentou ainda mais com o Google Android, que escolheu o Java como linguagem preferencial de desenvolvimento de aplicações.
O Java implementa os quatro pilares de forma bastante intuitiva, o que facilita o entendimento por parte do desenvolvedor. A abstração, o primeiro pilar, é implementado através de classes, que contém propriedades e métodos, de forma bastante simples. Já o encapsulamento é realizado através de propriedades privadas, auxiliadas por métodos especiais getters e setters, como mostra a Listagem 1. Vale ressaltar a palavra-chave “this” mostrada no método SetId(). Essa palavra-chave funciona como um representante da classe atual, uma auto-referência ao próprio objeto.
Listagem 1. Encapsulamento em Java
As questões de herança e polimorfismo no Java são um pouco mais complexas. O Java possui herança simples, o que significa que cada classe pode herdar de apenas uma outra. Entretanto, o Java possui as chamadas Interfaces, que possuem propriedades e assinaturas de métodos. Essas interfaces precisam ser implementadas para funcionar, o que significa que uma classe pode implementar várias interfaces e herdar de
apenas uma classe. Na questão de polimorfismo, o atributo @Override é responsável por informar ao Java que o método em questão está sendo reescrito.
C#
O C#, por sua vez, é outra das linguagens mais utilizadas no mercado. Como os computadores pessoais no mundo, em sua maioria, possuem o sistema operacional Windows, da Microsoft, o C# se popularizou. Isso porque o Windows implementa o Framework .NET, ao qual o C# está associado. O C# é uma linguagem de uso geral e especialmente criada para utilização com a orientação a objetos. Vale ressaltar que, em C#, tudo é um objeto (herda da classe object).
A abstração é muito simples, e segue o modelo do Java. A questão de encapsulamento é um pouco diferente devido a implementação dos métodos getter e setter. A nomenclatura também é um pouco diferente. A variável que realmente guarda o valor do dado é chamada atributo, enquanto a propriedade é o elemento que realmente acessa aquele dado do mundo externo. Isso está mostrado na Listagem 2. Além disso, o C# faz uso de duas palavras-chave especiais: get e set.
Listagem 2. Encapsulamento em C#
 
A questão da herança em C# também segue o modelo do Java: herança simples e a possibilidade de utilização de interfaces. A importância das interfaces é muito grande, uma vez que elas podem dar o tipo dos dados, que somente posteriormente serão associados a um tipo real, como mostra a Listagem 3. Isso também é válido para o Java. Por padrão, as identidades das interfaces começam com a letra “I”. O polimorfismo, por sua vez, é baseado em métodos virtuais (com a palavra-chave virtual) na classe pai e reescritos com a palavra-chave override na classe filha.
Listagem 3. Interfaces em C#
 
C++
O C++, por sua vez, é uma linguagem um pouco mais primitiva, e permite muito mais liberdades com o hardware. Como ele foi derivado imediatamente do C, o C++ permite a utilização de ponteiros, por exemplo, que irão trabalhar diretamente com a memória. Além disso, o C++ pode utilizar todas as bibliotecas C que existem diretamente.
Em termos de abstração, o C++ implementa classes, assim como qualquer linguagem orientada a objetos. Ele também possui o sentido de privado e público, que é utilizado para encapsulamento. Esse encapsulamento é realizado através de métodos getter e setter, muito similar ao visto em Java, como mostra a Listagem 4. Repare que a listagem mostra somente a assinatura dos métodos especiais, sendo que sua implementação é a mesma que em Java. Esse tipo de adaptação é muito comum em C++, onde a classe é guardada em um arquivo .h e sua implementação em um arquivo .cpp.
Listagem 4. Encapsulamento em C++
A questão da herança no C++ é um pouco diferente. A linguagem permite a herança múltipla, o que significa que cada classe pode herdar de quantas classes desejar. Isso pode causar problemas de métodos que possuem o mesmo nome, portanto o desenvolvedor precisa estar atento. O polimorfismo é baseado em métodos virtuais, da mesma forma como o C#. A complexidade, entretanto, é maior, uma vez que temos que cuidar de detalhes de mais baixo nível, como acesso a memória.
Além dessas exemplificadas, existem outras linguagens que merecem ser citadas. Entre elas, podemos elencar: Python, linguagem de script orientada a objetos que é muito utilizada em pesquisas científicas devido a sua velocidade; Object Pascal (também conhecida como Delphi, devido ao nome de sua IDE), que está caindo em desuso, apesar do grande número de sistemas mais antigos que a utilizam; Objective-C, que é a linguagem de preferência para desenvolvimento de aplicações para os sistemas da Apple, como iPhone e iPad; Ruby, voltada para o desenvolvimento web; e Visual Basic .NET, muito utilizada até pouco tempo, mas também caindo em desuso, principalmente devido ao avanço do C# em popularidade.
Ao longo desse artigo, procuramos elencar os elementos que fazem da programação orientada a objetos um sucesso no momento. Vimos os quatro pilares desse paradigma e entendemos como eles são implementados em algumas das linguagens mais utilizadas no mercado de desenvolvimento. Além disso, entendemos algumas das vantagens que tornaram a programação orientada a objetos um grande sucesso para o desenvolvimento de sistemas modernos
 4.4. Programação Web I 
 4.4.1. Nesse tópico deverá estruturar de forma que faça o levantamento de no mínimo 4 tecnologias para desenvolvimento Web abordando seus principais recursos exemplificando seu uso. Como fechamento desse item deverá fazer um comparativos entre as tecnologias. 
 4.4.1.1 Java
Java é uma das linguagens de programação mais usadas no mundo. A primeira versão da linguagem foi lançada pela Sun Microsystems em 1995 e atualmente pertence à Oracle. É uma linguagem Orientada a Objetos e a principal linguagem de programação utilizada para desenvolver aplicativos para tablets e smartphones da plataforma Android. Também muito utilizada para desenvolvimento Web.
O compilador Java
Quando você programa para a plataforma Java, escreve o código de origem em arquivos .java e em seguida os compila. O compilador verifica o seu código com relação às regras de sintaxe da linguagem e, em seguida, grava bytecodes em arquivos .class. Os bytecodes são instruções padrão que devem ser executadas em uma Java virtual machine (JVM). Ao incluir esse nível de abstração, o compilador Java é diferente dos compiladores de outras linguagens, que gravam instruções adequadas para o conjunto de chips da CPU no qual o programa será executado.
A JVM
No tempo de execução, a JVM lê e interpreta os arquivos .class e executa as instruções do programa na plataforma de hardware nativa para a qual a JVM foi escrita. A JVM interpreta os bytecodes da mesma forma que a CPU interpretaria as instruções da linguagem do conjunto. A diferença é que a JVM é um software escrito especificamente para uma plataforma. A JVM é o ponto central do princípio da linguagem Java: "escreva uma vez, execute em qualquer lugar". O código pode executar em qualquer conjunto de chips para o qual uma implementação adequada de JVM estiver disponível. Há JVMs disponíveis para as principais plataformas, como Linux e Windows, e subconjuntos da linguagem Java foram implementados em JVMs de chips para celulares e praticantes de hobby.
O coletor de lixo
Em vez de obrigá-lo a acompanhar a alocação de memória (ou usar uma biblioteca de terceiros para fazer isso), a plataforma Java fornece gerenciamento de memória de fábrica. Quando o seu aplicativo Java cria uma instância de objeto no tempo de execução, a JVM aloca automaticamente o espaço na memória para esse objeto no heap, que é um conjunto de memória separado para que o seu programa o use. O coletor de lixo executa em segundo plano, verificando quais são os objetos que não são mais necessários para o aplicativo e tomando de volta a memória reservada a eles. Essa abordagem à manipulação da memória é chamada gerenciamento implícito da memória porque não requer que você escreva código para manipular a memória. A coleta de lixo é um dos recursos essenciais para o desempenho da plataforma Java.
O Java Development Kit
Ao fazer o download de um Java Development Kit (JDK), você obtém — além do compilador e de outras ferramentas — uma biblioteca de classes completa de utilitários pré-construídos que ajudam a realizar qualquer tarefa comum no desenvolvimento de aplicativos. A melhor forma de ter uma ideia do escopo dos pacotes e bibliotecas do JDK é dar uma olhada na documentação da API JDK (consulte Recursos ).
O Java Runtime Environment
O Java Runtime Environment (JRE; também conhecido como Java Runtime) inclui a JVM, bibliotecas de código e os componentes necessários para executar programas escritos na linguagem Java. Está disponível para várias plataformas. É permitido redistribuir gratuitamente o JRE com os seus aplicativos, de acordo com os termos da licença do
JRE, para oferecer aos usuários do aplicativo uma plataforma para executar o seu software. O JRE está incluído no JDK.
 4.4.1.2 PHP
O PHP é a linguagem de programação mais usada no backend de sites. Tem gente que ama e tem gente que odeia, mas a verdade é que a maioria dos sites da internet são feitos com PHP. Isso se deve, em grande parte, aos gerenciadores de conteúdo (CMS) mais usados no mundo, tais como WordPress, Drupal, Joomla. A maioria dos blogs que você encontra na internet usa um desses gerenciadores de conteúdo. O próprio { Dicas de Programação } utiliza o PHP, pois foi feito com o CMS WordPress.
PHP (sigla que hoje é um acrônimo recursivo para PHP: Hipertext PreProcessor) é uma linguagem de programação server-side scripts (scripts executados no servidor). Um exemplo de server-side scripts são os sistemas de busca da internet (www.google.com.br, www.yahoo.com.br, etc...).
 Quando o usuário acessa uma página PHP por meio de seu browser (navegador), todo o código PHP é executado no servidor, e os resultados são enviados para seu navegador. Portanto, o navegador exibe a página já processada, sem consumir recursos de seu computador. As linhas de programação PHP não podem ser vistas por ninguém, já que elas são executadas no próprio servidor, e o que retorna ao usuário é apenas o resultado do código executado.
 As linhas de código PHP são embutidas no código HTML (HiperText Markup Language). O HTML é a linguagem padrão para criação de páginas de Internet. Como o próprio significado da sigla informa, o HTML é capaz de proporcionar hiper-textos. Hiper-texto é um modo que proporciona ao usuário uma maior interação com textos de uma página web, onde informações são interligadas intuitiva e associativamente. Através de saltos - que marcam o movimento do hipertexto - o leitor assume um papel ativo, sendo ao mesmo tempo co-autor.
 Por não tratar-se de uma linguagem de "programação" propriamente dita (trata-se de uma linguagem descritiva que tem como objeto dar formato ao texto e às imagens que se pretende visualizar no navegador), o HTML necessita de linguagens que complementem e supram as suas limitações, como é o caso do PHP (BHON, 2004).
 
 4.4.1.3 JAVASCRIPT.
Para rodar JavaScript em uma página Web, precisamos ter em mente que a execução do código é instantânea. Para inserirmos um código JavaScript em uma página, é necessário utilizar a tag <script>:
<script>
 alert("Olá, Mundo!");
</script>
O exemplo acima é um "hello world" em JavaScript utilizando uma função do navegador, a função alert. É possível adicionar essa tag em qualquer local do documento que a sua renderização ficará suspensa até o término dessa execução.
Experimente criando essa tag em um HTML e reposicionando-a, verifique os elementos que já foram renderizados na página antes do aparecimento da caixa de diálogo e o que acontece após clicar em "OK".
Também é possível executar código que está em um arquivo externo, por exemplo:
No arquivo HTML
<script src="scripts/hello.js"></script>
Arquivo externo script/hello.js
alert("Olá, Mundo!");
Com a separação do script em arquivo externo é possível reaproveitar alguma funcionalidade em mais de uma página.
5.2 - Console do navegador
Alguns navegadores dão suporte a entrada de comandos pelo console. Por exemplo, no Google Chrome o console pode ser acessado por meio do atalho Control + Shift + C; no Firefox, pelo atalho Control + Shift + K.
 4.4.1.4. C#
O C# é a linguagem principal quando se fala de Microsoft. Desde serviços e plataformas web a dispositivos móveis que utilizam Windows Phone. Também é uma das linguagens usadas do motor gráfico de desenvolvimento de jogos Unity é o C#. Se você quer programar para Windows 7, 8, 10, etc. aprenda C#.
A sintaxe do C# é altamente expressiva, mas ela também é simples e fácil de aprender. A sintaxe do C# será instantaneamente reconhecida por qualquer pessoa familiarizada com C, C++ ou Java. Os desenvolvedores que sabem qualquer uma dessas linguagens são geralmente capazes de começar a trabalhar de forma produtiva com C# dentro de um tempo muito curto. A sintaxe do C# simplifica muitas das complexidades do C++ e fornece recursos poderosos, como tipos de valor nulo, enumerações, delegações, expressões lambda e acesso direto a memória, que não são encontrados no Java. O C# suporta métodos e tipos genéricos, que fornecem uma melhor segurança de tipo e desempenho, e iteradores, que permitem implementadores de coleções de classes para definir comportamentos de iteração personalizados que são simples de usar pelo código cliente. Expressões LINQ (consulta integrada à linguagem) fazem a consulta fortemente tipada uma linguagem de construção de primeira classe.
Como uma linguagem orientada à objetos, o C# suporta os conceitos de encapsulamento, herança e polimorfismo. Todas as variáveis e métodos, incluindo o método principal (Main), o ponto de execução de uma aplicação, são encapsuladas em definições de classes. Uma classe derivada pode herdar diretamente somente de uma classe pai, mas pode herdar de qualquer quantidade de interfaces. Métodos da classe derivada que substituem métodos virtuais de uma classe pai exigem a utilização da palavra-chave override como forma de evitar a redefinição acidental. Em C#, uma struct é como uma classe simplificada; é um tipo alocado em pilha que pode implementar interfaces mas não suporta herança.
Além desses princípios básicos orientados a objeto, o C# facilita o desenvolvimento de componentes de software por meio de vários constructos de linguagem inovadores, inclusive os seguintes:
 Assinaturas de métodos encapsulados, chamadas delegates, que permitem notificações de evento de tipo seguro.
 Propriedades, que servem como acessadores para variáveis de membro particular.
 Atributos, que fornecem metadados declarativos sobre tipos em tempo de execução.
 Comentários Embutidos da Documentação XML.
 LINQ (Consulta Integrada à Linguagem) que fornece recursos internos de consulta através de várias de fontes de dados.
Se você tiver que interagir com outros softwares Windows como objetos COM ou DLLs Win32 nativas, você pode fazer isso em C# através de um processo chamado "Interop". O Interop permite aos programas C# fazer quase tudo que uma aplicação nativa C++ pode fazer. O C# suporta ponteiros e o conceito de código inseguro para esses casos em que acesso direto à memória é absolutamente crítico.
O processo de compilação do C# é simples comparado com C++ e mais flexível que em Java. Não há arquivos de cabeçalho separados, e não há a necessidade de que métodos e tipos sejam declarados em uma ordem específica. Um arquivo de código em C# pode definir qualquer número de classes, estruturas, interfaces e eventos.
4 CONCLUSÃO
 
Ao desenvolver este portfólio, foi de grande valia para os meus conhecimentos em pesquisar a respeito das linguagens de programação, pois procurei em diversos sites, onde eu parava um pouco, e começa a ler mais sobre as linguagens, na nossa formação em ADS, temos que procurar aprender todos os dias, principalmente nós alunos do EAD, nossas aulas não se limita só ao polo, temos que cair na web, em busca de conhecimento, tudo que encontrarmos é conhecimento a mais, por isso os portfólio ajuda bastante, não só eu, mais a maioria dos alunos, aprender um linguagem de programação é tão importante como ganhar um certificado, pois a alegria é bastante em saber programar, espero que os meus conhecimentos se renove todos os dias, espero que os professores e tutores do curso mim ajude a ser um bom desenvolvedor e programador.
REFERÊNCIAS
Caelum
< http://www.caelum.com.br/apostila-html-css-javascript/javascript-e-interatividade-na-web/#5-2-console-do-navegador>
Dicas de Programação
< http://www.dicasdeprogramacao.com.br/as-10-linguagens-de-programacao-mais-requisitadas-pelo-mercado/>
Devmedia
< http://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264>
Ebah
< http://www.ebah.com.br/content/ABAAAA7sEAD/uml-2-0?part=2>
IBMdeveloperWorks
< https://www.ibm.com/developerworks/br/java/tutorials/j-introtojava1/>
Microsoft
< https://msdn.microsoft.com/pt-br/library/z1zx9t92.aspx>
Profissionais TI
< http://www.profissionaisti.com.br/2011/07/os-principais-diagramas-da-uml-resumo-rapido/>
UFRGS
< http://www.ufrgs.br/engcart/PDASR/linguagens.html>
UML
<http://www.dsc.ufcg.edu.br/~sampaio/cursos/2007.1/Graduacao/SI-II/Uml/diagramas/diagramas.htm>
Sistema de Ensino Presencial Conectado
ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
Portfólio individual 
Desenvolvimento de Sistemas II
Sobral - Ce
2015
Portfólio individual
Desenvolvimento de Sistemas II
Trabalho de Produção Textual (Individual) apresentado à Universidade Norte do Paraná - UNOPAR, como requisito parcial para a obtenção de média semestral nas disciplinas de Análise Orientada a Objetos II, 
Banco de Dados II, Programação Orientada a Objetos, 
Programação Web I e Seminário IV.
Orientadores: Professores. Luis Claudio Perini, Roberto Y. Nishmura, Márcio Roberto Chiaveli, Veronice de Freitas, Adriane Ap. Loper.
Sobral - Ce
2015

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais