Baixe o app para aproveitar ainda mais
Prévia do material em texto
Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 3 de 125 O sual udio é njunto e rramentas que uxiliam na iação e software, desde lanejamento té esign da rface ráfica, codificação, teste, debugging, análise da qualidade e digo e erformance, implantação. Todas essas ferramentas são integradas e estão disponíveis na IDE (Integrated Development Environment) Visual Studio. Existem três versões o Visual Studio Community (gratuito), o Visual Studio Enterprise (pago) e o Visual Studio Code (gratuito, código fonte para MAC e Linux). O Visual Studio permite a criação de: 1. apps e jogos para Windows, Android e iOS. 2. websites e web services baseados em ASP.NET, JQuery, AngularJS, e outros frameworks. 3. aplicações para plataformas e dispositivos diversos como Azure, Office, Sharepoint, entre outros. 4. jogos e aplicações com uso intensivo de gráficos para diversos dispositivos Windows, incluindo o Xbox, com a utilização do DirectX. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 4 de 125 Este é o famoso Visual Studio IDE (versão 2015). Nela podemos ver um projeto aberto, a solução “BGs Restaurant Guide”. Agora que você já foi apresentado a tela do Visual Studio, vamos falar um pouco mais de alguns itens destacados: • Visual Studio Team Services - a Team Explorer Window permite a navegação pelo controle de versão de código e dos itens de trabalho da equipe do projeto. • Open Solution - o Solution Explorer permite a navegação pelas pastas e arquivos do projeto. • Code Editor - Toda IDE possui essa área, que é onde você efetivamente escreve o código. Uma ferramenta que merece destaque é a ToolBox. A imagem abaixo mostra os Controles que você pode incluir no seu formulário apenas clicando e arrastando. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 5 de 125 Digamos que você queira criar um formulário como o da figura a seguir, nesse caso o Visual Studio adicionará Controles na sua classe, eles são objetos como qualquer outro, porém já tem um padrão de desenho. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 6 de 125 Para projetos que utilizam uma interface baseada em XAML, o designer padrão é o Blend. Ele é integrado ao Visual Studio. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 11 de 125 A) como os elementos do código se relacionam uns com os outros e suas dependências. B) as bases de dados utilizadas pela aplicação. C) as conexões utilizadas pela aplicação para controle do firewall. D) as permissões de acesso dos usuários à aplicação. E) se a aplicação necessita realizar chamadas de baixo nível para controlar algum dispositivo de hardware. Comentários: O arquivo Manifest é um XML que descreve quais assemblies são necessários para que uma aplição execute. Veja um exemplo do arquivo Manifest: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!--This Id value indicates the application supports Windows Vista functionality --> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!--This Id value indicates the application supports Windows 7 functionality--> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> <!--This Id value indicates the application supports Windows 8 functionality--> <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> <!--This Id value indicates the application supports Windows 8.1 functionality--> <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> </application> </compatibility> <assemblyIdentity type="win32" name="myOrganization.myDivision.mySampleApp" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="0000000000000000" /> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="0000000000000000" language="*" /> </dependentAssembly> </dependency> </assembly> Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 14 de 125 é digitado, sugestões ao programador, como por exemplo tipos de dados e membros de classes e estruturas. Esse analisador é chamado A)TextMate. B)Lexical Analyzer. C)IntelliSense. D)Active Directory. E)ActiveSync. Comentários: Este é o famosos recurso de AutoComplete que nós desenvolvedores adoramos não é? O VisualStudio chamou essa ferramenta de IntelliSense. Veja um exemplo na figura abaixo. Gabarito: C 11. (CESGRANRIO - 012 E - NALISTA DE GESTÃO CORPORATIVA - TECNOLOGIA DA INFORMAÇÃO) O Microsoft Visual Studio Team Foundation Server 2010 é a nova plataforma colaborativa da Microsoft. Essa plataforma pode ser utilizada em substituição ao sistema de controle de versão conhecido como A) Team Explorer Everywhere B) Work Item Tracking C) Application Lifecycle Management D) Visual SourceSafe E) Development Platform Support Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 15 de 125 Comentários: A antiga plataforma de colaboração era o Visual SourceSafe. Já o Team Explorer Everywhere é a ferramenta que permite a utilização do Team Foundation Server no Eclipse. Work Item Tracking faz parte do Visual Studio Team Services e permite que a equipe gerencie informações, bugs e tarefas para determinado item de trabalho. O Application Lifecycle Management (ALM), o Gerenciamento do Ciclo de Vida do Software compreende desde a governança, passando pelo desenvolvimento até a manutenção do produto; o Visual Studio é uma ferramenta de apoio não só ao desenvolvimento, mas também de todo o ALM. O Visual Studio também oferece o Development Platform Support, que auxilia o desenvolvedor com um ambiente preparado para a construção integrada da aplicação para todas as plataformas Microsoft (Desktop, Windows Store, Windows Phone, Cloud Services, etc). Gabarito: D 12. (FGV - 016 BGE- A ÁLISE SISTEMAS ENVOLVIMENTO DE SISTEMAS) Com relação aos arquivos XAML do framework .NET produzidos pela IDE do Visual Studio durante o processo de desenvolvimento de uma aplicação móvel para o Windows Phone 8.1, analise as afirmativas a seguir: I. Um arquivo XAML deve ter mais de um elemento raiz. II. Window, Page, ResourceDictionary e Application são elementos do tipo raiz. III. O namespace padrão do WPF é o http://schemas.microsoft.com/winfx/2006/xaml/presentation. Está correto somente oque se afirma em: A) I B) II C) I e II D) I e III E) II e III Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 17 de 125 NHIBERNATE Galera, vamos entrar no mundo .NET? Mais especificamente vamos apresentar hoje um dos frameworks mais utilizados para mapeamento objeto relacional em aplicações .NET: o NHibernate! Esse nome nos lembra alguma coisa, pessoal?? Claro, né! O bom e velho Hibernate, implementação da especificação Java Persistence API deu nome ao seu primo, versão Microsoft. Pois o NHibernate é bem isso mesmo, um Hibernate para .Net. Com ele podemos fazer o mapeamento entre nossas classes .NET de entidade para bancos de dados (ou outras formas de armazenamento), facilitando bastante a camada de acesso a dados. O projeto do NHibernate começou em 2003 pelo desenvolvedor Paul Hatcher, que teve ajuda posterior de Mike Doerfler e Sergei Koshcheyev para tornar-se um produto robusto que, hoje, é utilizado por muitos desenvolvedores .NET. NHibernate é um projeto de código aberto e pode ser encontrado para ser baixado e instalado no site do SourceForge. Com o NHibernate podemos persistir objetos numa base de dados e carregá-los a partir de um SGBD. O NHibernate automaticamente traduz a linguagem .NET, orientada a objetos, para uma linguagem que o banco de dados entende. Ou seja, galera, ele gera o código SQL necessário para inserir, atualizar, remover e carregar dados de um (ou vários) Sistemas Gerenciadores de Bandos de Dados (SGBDs). O NHibernate suporta muitos tipos de SGBDs, incluindo Oracle, SQL Server, MySQL, PostgreSQL, SyBase. Esse mapeamento entre objetos e dados dos bancos de dados é chamado de mapeamento objeto-relacional. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 18 de 125 O mapeamento é responsável por definir qual classe é mapeada para qual tabela, e qual propriedade da classe é mapeada para qual coluna da tabela. A partir dessas definições o NHibernate pode operar nessa tradução e criar os comandos SQL necessários para realizarmos os acessos à camada de persistência. As formas mais comuns de realizar esse mapeamento são a partir de documentos XML ou de definições no próprio código das classes e seus atributos. Existem algumas ferramentas que realizam esse mapeamento de forma automática, como é o caso do Fluent NHibernate (http://fluentnhibernate.org). Galera, para usar o NHibernate nas aplicações .NET, temos que seguir os passos: • Baixar e instalar o NHibernate (é mesmo, professor, não diga! :P) • Referenciar os binários no NHibernate no projeto .NET (NHibernate.dll) • Criar os arquivos de classes de entidades (C#) • Criar os arquivos de mapeamento (ou realizando mapeamento no código) • Configurar uma SessionFactory Vamos a um exemplo de criação de classe, com uma respectiva tabela no banco de dados, e seu mapeamento objeto-relacional. A classe “Banda” é a segue: public class Banda { public virtual Guid Id { get; set; } // ID da banda public virtual string Nome { get; set; } // Nome da banda public virtual IList<Musico> Integrantes { get; set; } // Integrantes da banda } Temos que a classe possui dois atributos, tipo Guid e Nome, bem como uma coleção de objetos da classe Musico. O mapeamento da classe para a tabela “BANDA” é descrito no arquivo “banda.hbm.xml” e teria o seguinte código: 】スxml version『テÜカ¿ト encoding『テutf-êト ス+ <hibernate-mapping xmlns『テurnオnhibernate-mapping-äカäト + 】class name『テBandaト table『テBANDAト+ 】id name『テIdト column『テIDト type『テSystemカGuidト マ+ 】property name『テNomeト column『テNOMEト type『テSystemカStringト マ+ 】set name『テIntegrantesト table『テMUSICOト lazy『テtrueト+ 】key column『テMUSICOIDト マ+ <one-to-many class『テMusicoト マ+ </set> </class> </hibernate-mapping> Vejam que o mapeamento do músico é do tipo one-to-many e com as restrições de um conjunto, ou seja, não se pode repetir os músicos. A tabela abaixo apresenta todos os tipos de mapeamento de como devem ser armazenadas as coleções no NHibernate: Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 20 de 125 Na maioria dos casos, para usar o NHibernate, basta que o programa crie uma só configuração, crie somente uma SessionFactory e, a partir daí, utilize objetos da classe Session para realizar toda a persistência dos objetos do programa. Vamos à classe que realiza a configuração, cria a SessionFactory e retorna objeto da classe Session para ser usada na aplicação: using NHibernate; using NHibernate.Cfg; namespace NHibernate.CadastroBandas.AcessoDados { //Projeto e pacote public class NHibernateBase { private static Configuration Configuration { get; set; } protected static ISessionFactory SessionFactory { get; set; } private static ISession session = null; private static IStatelessSession statelessSession = null; public static Configuration ConfigureNHibernate(string assembly) { Configuration = new Configuration(); // Busca todas as informações de configuração e arquivos de mapeamento Configuration.AddAssembly(assembly); return Configuration; } // Executado somente uma vez no incio do programa! public void Initialize(string assembly) { Configuration = ConfigureNHibernate(assembly); SessionFactory = Configuration.BuildSessionFactory(); } // Define classe que implemente ISession e retorna uma Sessao para ser usada // para persistir os objetos public static ISession Session { get { if (session == null) { session = SessionFactory.OpenSession(); } return session; } } } } Finalmente, galerinha, vamos fazer uma consulta utilizando HQL (Hibernate Query Language), que é uma espécie de Object Query Language, que nada mais é que um SQL para manipular objetos. public IList GetBandas () { using (ITransaction transaction = Session.BeginTransaction()) { IQuery query = Session.CreateQuery ルテselect Idウ Nome from Banda order by Nomeトレエ return query.List(); } } Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 21 de 125 A consulta traz todas as bandas, com os respectivos ids. Vejam que utilizamos objeto de Session para criar uma consulta da interface IQuery, dentro de uma transação. Pessoal, isso era o que tínhamos para mostrar para vocês sobre NHibernate! Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 22 de 125 NTITY FRAMEWORK Galera, vamos ver uma das alternativas para utilizar mapeamento objeto-relacional no mundo .NET? Mais especificamente vamos apresentar o Entity Framework Entity Framework é uma espécie de Hibernate (e alternativa ao NHibernate) da Microsoft que permite que o desenvolvedor trabalhar com dados relacionais (bancos de dados relacionais) como se fossem conjunto de classes e objetos. Ele consegue eliminar muito do código “baixo nível” no acesso a bases de dados, principalmente por deixar transparente o uso de objetos ADO.NET (ActiveX Data Objects) para acesso aos dados. O Entity Framework, assim como todo framework objeto-relacional que se preze, facilita muito a manipulação de dados persistidos em Sistemas Gerenciadoresde Bancos de Dados (SGBDs), e cria uma camada de acesso simples de utilizar. A primeira versão do Entity Framework foi a 3.5 e foi distribuída junto do.NET Framework 3.5 SP1 e Visual Studio 2008 SP1. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 23 de 125 Galera, esse é um exemplo de mapeamento feito pelo código: [Table("ToDo")] // Table name public class Banda { [Key] // Primary key public int Id { get; set; } [Column("NOME_BANDA", TypeName="ntext")] public string Nome { get; set; } [Column("EH_DE_ROCK", TypeName="bit")] public bool IsRockNaVeia { get; set; } } O mapeamento, portanto, é feito por meio das anotações entre “[]”. Cada atributo é mapeado para uma coluna da tabela correspondente à classe. Mas para configurar o banco, precisamos de uma string de conexão: public partial class BandaDBContext : DbContext { public BandaDBContext() : base("name=BandaConnectionString") { } public DbSet<Banda> Bandas { get; set; } } Legal, professor, e como faço para buscar todas as bandas do banco de dados? Padawan, o código é esse que segue (bem facinho!!): using(BandaDBContext db = new BandaDBContext()) { IEnumerable<Banda> bandas = db.Bandas; } Galera, pra finalizar, temos que ter em mente que o Entity Framework roda por cima do ADO.NET, que já é uma baita biblioteca que define muitas formas de acessos a fontes de dados diversas. A ideia do Entity é realizar esse mapeamento objeto-relacional e facilitar a codificação. Assim, temos que a arquitetura de uma aplicação que usa o Entity Framework é mais ou menos assim: Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 24 de 125 Figura 1 - Fonte - Mastering Entity Framework (Rahul Rajat Singh) Era isso, galerinha! Infelizmente não encontramos questões de concursos, mas se acharem estamos aqui para tirar as dúvidas!! Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 25 de 125 V CRIPT Galera, vamos conhecer uma das linguagens de script mais utilizadas no mundo: VBScript O VBScript é conhecido por esse nome, mas ele se chama Microsoft Visual Basic Scripting Edition, e faz parte da família Visual Basic, que inclui o Microsoft Visual Basic Development System (the retail version of Visual Basic in its Enterprise, Professional, and Learning Editions) and Visual Basic for Applications (the language component of Visual Basic, which is included in the individual applications within Microsoft Office and Microsoft Project, as well as in a host of third-party applications). VBScript is, for the most part, a subset of the Visual Basic for Applications programming language. It was developed so that the millions of Visual Basic developers could leverage their knowledge of VB/VBA in Internet scripting. One of the strengths of VBScript is that it uses the same familiar and easy syntax that has made VBA so popular as a programming language, making it very easy to learn for those who have some Visual Basic background. In addition, VBScript is fairly easy to learn for those without any programming experience. Ironically, VBScript started as a client-side scripting language to create interactive web pages, but it had a major liability: it was and is not supported by Netscape Navigator. Instead, the two major web browsers on the market, Navigator and Microsoft Internet Explorer, both supported a common scripting language, ECMAScript, that became the de facto standard and is now the de jure standard Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 26 de 125 for client-side scripting. (Netscape's implementation of ECMAScript is named JavaScript, while Microsoft's implementation is named JScript.) Despite its failure in this area, however, VBScript rapidly became the major scripting language in three other areas: • Active Server Pages (ASP) applications • Outlook forms • Windows Script Host (WSH) scripts Differences Between VBScript and VBA VBScript is a subset of the Visual Basic for Applications language. There are several features that VB and VBA programmers have become accustomed to that are not present in VBScript. This does not lessen the usability of VBScript: it only serves to reinforce that VBScript is meant for scripting and not full-blown client/server application development or COM component development. Let's take a look at a few of the larger differences between VBScript and VBA: VBScript is a weakly typed language. Unlike Visual Basic and Visual Basic for Applications, in which the developer can define the data type of a variable in advance, all variables in VBScript are variants. There are types to handle different types of data; you can use these as you would the traditional data types in Visual Basic. VBScript does not support early binding. Because variables are untyped and code is not compiled, all external objects instantiated in VBScript code are necessarily late-bound. This has a number of implications. First, late binding typically entails a substantial performance penalty in comparison to early binding. Second, while the properties and methods of early- bound objects can be examined in Visual Basic or hosted VBA environments using the Object Browser, this is not the case with late-bound objects. Finally, the help facilities available for early-bound objects in VB and VBA (like Auto List Members and Auto Quick Info) are not available, making syntax errors more likely and ready access to good documentation all the more necessary. VBScript does not support named arguments. VBA supports both positional and named arguments for most functions and procedures. For example, the VBA MsgBox function can be called using positional arguments as follows: lResult = MsgBox("Delete this file?", _ vbYesNo Or vbQuestion Or vbDefaultButton2, _ Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 27 de 125 "Confirm File Deletion") A method call using named arguments takes the following form: lResult = MsgBox(Prompt:="Delete this file?", _ Title:="Confirm File Deletion", _ Buttons:=vbYesNo Or vbQuestion Or vbDefaultButton2) Note that while positional arguments must occur in a predefined sequence, named arguments need not. At least in our experience, more advanced programmers tend to prefer positional syntax, while more novice programmers tend to prefer named arguments. Given all of this, it is unfortunate that VBScript supports only positional arguments. VBScript does not have an IDE. There is no integrated development environment for VBScript that parallels the IDE for Visual Basic and Visual Basic for Applications. Development tools are available for all of the environments in which VBScript is used, but all fall short of the power, simplicity, elegance, and ease of use of the VB/VBA IDE.Typically, web developers have had their own environments for writing their code. VBScript for the Web, whether it is client-side or server-side, is embedded inside of a <SCRIPT> tag. This allows web developers to continue to use their tool of choice even when using VBScript; a wide array of tools for web script developmentare available. Scripts for WSH can be created with the use of a simple text editor like Windows Notepad. Outlook comes with its rudimentary IDE (a glorified version of Notepad) for attaching code to Outlook forms. Functions and Procedures Functions and procedures (or subroutines) are central to modern programming. Dividing our script into subroutines helps us to maintain and write programs by segregating related code into smaller, manageable sections. It also helps to reduce the number of lines of code we have to write by allowing us to reuse the same subroutine or function many times in different situations and from different parts of the program. In this section, we'll examine the different types of subroutines, how and why they are used, and how using subroutines helps to optimize code.Defining Subroutines: The Sub . . . End Sub Construct The Sub...End Sub construct is used to define a subroutine; that is, a procedure that performs some operation but does not return a value to its calling program. Blocks of code defined as subroutines with the Sub...End Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 28 de 125 Sub cmdButton1_OnClick Call ShowAlertBox(cmdButton1.Value) End Sub Sub cmdButton2_OnClick ShowAlertBox cmdButton2.Value End Sub Sub cmdButton3_OnClick ShowAlertBox cmdButton3.Value End Sub Sub ShowAlertBox(strButtonValue) dim strMessage strMessage = "This is to let you know" & vbCrLf strMessage = strMessage & "you just pressed the button" & vbCrLf strMessage = strMessage & "marked " & strButtonValue Alert strMessage End Sub Galera, esse é um exemplo de mapeamento feito pelo código: [Table("ToDo")] // Table name public class Banda { [Key] // Primary key public int Id { get; set; } [Column("NOME_BANDA", TypeName="ntext")] public string Nome { get; set; } [Column("EH_DE_ROCK", TypeName="bit")] public bool IsRockNaVeia { get; set; } } O mapeamento, portanto, é feito por meio das anotações entre “[]”. Cada atributo é mapeado para uma coluna da tabela correspondente à classe. Mas para configurar o banco, precisamos de uma string de conexão: public partial class BandaDBContext : DbContext { public BandaDBContext() : base("name=BandaConnectionString") { } public DbSet<Banda> Bandas { get; set; } } Legal, professor, e como faço para buscar todas as bandas do banco de dados? Padawan, o código é esse que segue (bem facinho!!): using(BandaDBContext db = new BandaDBContext()) { IEnumerable<Banda> bandas = db.Bandas; } Galera, pra finalizar, temos que ter em mente que o Entity Framework roda por cima do ADO.NET, que já é uma baita biblioteca que define muitas formas de acessos a fontes de dados diversas. A ideia do Entity é realizar esse mapeamento Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 29 de 125 objeto-relacional e facilitar a codificação. Assim, temos que a arquitetura de uma aplicação que usa o Entity Framework é mais ou menos assim: Figura 2 - Fonte - Mastering Entity Framework (Rahul Rajat Singh) Era isso, galerinha! Infelizmente não encontramos questões de concursos, mas se acharem estamos aqui para tirar as dúvidas!! Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 30 de 125 V UAL IC Visual Basic 2015 is Microsoft’s latest incarnation of the enormously popular Visual Basic language, and it’s fundamentally different from the versions that came before it. Visual Basic is more powerful and more capable than ever before, and its features and functionality are on par with “higher-level” languages such as C++. One consequence of this newfound power is added complexity. Gone are the days when you could sit down with Visual Basic and the online Help and teach yourself what you needed to know to create a functional program. In the past, Visual Basic was an autonomous language. This has changed. Now, Visual Basic is part of a larger entity known as the .NET Framework. The .NET Framework encompasses all the .NET technology, including Visual Studio .NET (the suite of development tools) and the common language runtime (CLR), which is the set of files that make up the core of all .NET applications. You’ll learn about these items in more detail as you progress through this book. For now, realize that Visual Basic is one of many languages that exist within the Visual Studio family. Many other languages, such as C#, are also .NET languages, make use of the CLR, and are developed within Visual Studio. Visual Studio 2015 is a complete development environment, and it’s called the IDE (short for integrated development environment). The IDE is the design framework in which you build applications; every tool you need to create your Visual Basic projects is accessed from within the Visual Basic IDE. Again, Visual Studio 2015 supports development using many different languages, Visual Basic being the most popular. The environment itself is not Visual Basic, but the language you use within Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 31 de 125 Visual Studio 2015 is Visual Basic. To work with Visual Basic projects, you first start the Visual Studio 2015 IDE. Start Visual Studio 2015 now by choosing Microsoft Visual Basic 2015 Express Edition from the Start/Programs menu. If you are running the full retail version of Visual Studio, your shortcut may have a different name. In this case, locate the shortcut on the Start menu and click it once to start the Visual Studio 2015 IDE. As a Visual Basic 2015 developer, you need to understand the concepts and technology that empower your applications. Microsoft .NET is the technology that provides the infrastructure for building next-generation applications for the desktop, the web, and the cloud—that run on the most recent operating systems. Although covering every aspect of .NET is not possible, in this chapter you learn the basics of its architecture, as well as the Base Class Library and tools. This chapter also introduces important concepts and terminology that are used throughout the rest of the book. If you have already had experience with .NET, in this chapter you will learn about the revolutionary changes in how Microsoft is offering .NET today. Generally speaking, applications you develop need an execution environment that offers services, tools, and libraries. For many years, for applications built with Microsoft Visual Basic, the execution environment has been the Microsoft .NET Framework. In previous releases, the .NET Framework was a unique environment for building a variety of applications, including desktop applications, web applications, and apps for mobile devices. With the new release, Microsoft has taken some steps forward: It has kept the full .NET Framework, now in version 4.6, for desktop applications, and it has created .NET Core 5, a new open source, modular framework for creating cross-platform applications and Windows 10 applications. Both frameworks share a number of major components, such as compilers, some libraries, and the garbage collector. Both frameworks are part of the new .NET vision called .NET 2015. Figure 1.1 showsa high-level diagram of .NET 2015. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 32 de 125 Actually, .NET 2015 is not a specific development platform. Rather, it is an umbrella for a group of platforms, a convenient way to highlight and summarize what is new in this release. This chapter provides information about both .NET Framework 4.6 and .NET Core 5 to give you a more precise idea about new directions for developing using .NET. The Common Language RuntimeAs its name implies, the Common Language Runtime provides an infrastructure that is common to all.NET languages. This infrastructure is responsible for taking control of an application’s execution and manages tasks such as memory management, access to system resources, security services, and so on. This kind of common infrastructure bridges the gap that exists between different Win32 programming languages because all .NET languages have the same possibilities. Moreover, the CLR enables applications to run inside a managed environment. The word managed is fundamental in the .NET development, as explained in the next section. Writing Managed CodeWhen talking about Visual Basic 2015 development and, more generally, about .NET development, you often hear about writing managed code. Before the first version of .NET (or still with non-.NET development environments), the developer was the only person responsible for interacting with system resources and the operating system. The developer had to consider tasks such as taking care of accessing parts of the operating system and managing Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 33 de 125 memory allocation for objects. In other words, the applications could interact directly with the system. However, as you can easily understand, this approach has some big limitations both because of security issues and because damages could be dangerous. The .NET Framework provides instead a managed environment. This means that the application communicates with the .NET Framework instead of with the operating system, and the .NET Runtime is responsible for managing the application execution, including memory management, resource management, and access to system resources. For example, the Common Language Runtime can prevent an application from accessing particular system resources if it is not considered fully trusted according to the .NET security zones. With Visual Studio 2015, you can develop applications with the following integrated programming languages: Visual Basic 14 C# 6 F# 4 C++ 11/14/17Depending on where you look, you may see the latest version of Visual Basic described as either Visual Basic 2015 or Visual Basic 14. Figura 3 - Fonte - Mastering Entity Framework (Rahul Rajat Singh) Era isso, galerinha! Infelizmente não encontramos questões de concursos, mas se acharem estamos aqui para tirar as dúvidas!! Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 34 de 125 Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 36 de 125 Um programa está dentro de um Namespace - ele indica que as classes pertencem à sua aplicação - para que o código fique separado do .Net. Uma classe contém um “pedaço” do seu programa, deve haver no mínimo uma classe. Por sua vez, os métodos contêm as instruções, que são ações individuais. Muito abstrato? Então vamos ver nosso primeiro trecho de código. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MinhaAplicacao { class Program { static void Main(string[] args) { Console.WriteLine("Oi! Eu sou o Goku."); } } } Então o que apareceu de diferente? Já sabemos que o .Net é um framework, ou seja, nele estão contidas várias bibliotecas que podem ser utilizadas por sua aplicação. É exatamente isso que as primeiras 4 linhas do código acima estão fazendo, a palavra using é utilizada para incluir bibliotecas externas ao seu namespace. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 39 de 125 Esta é uma boa classe para representar todos os animais, eles todos fazem essas coisas. Porém nem todos fazem tudo igual, não é mesmo? Agora, se fossemos criar as classes Hipopótamo e Cachorro quais métodos seriam diferentes? De acordo com a nossa tirinha (rs), Comer() seria um deles. Outro método diferente seria o FazerBarulho(), o cachorro late e o hipopótamo grunhe (pesquisei essa). A subclasse modifica os métodos da superclasse (ou classe base) através da sobrescrita, em C# basta utilizar a palavra-chave override no método da subclasse, e a palavra-chave virtual no método da classe base. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 40 de 125 Agora que já temos os conceitos básicos de herança, vamos ver um código de exemplo? public class Animal { //esta é nossa classe base: Animal. public String nome; //o atributo nome é público será herdado por todas as subclasses public virtual void FazerBarulho(){ Console.WriteLine("Grunhido"); } public virtual void Comer(){ { Console.WriteLine("Nhac"); } /** os métodos FazerBarulho() e Comer() estão marcados com a palavra- chave virtual, ou seja podem ser sobrescritos. **/ public void Dormir(){ Console.WriteLine("Zzz"); } public void Andar(){ Console.WriteLine("Pegada"); } /** já os métodos Dormir() e Andar() não poderão ser sobrescritos. Todos os animais que herdarem a classe Animal poderão Dormir e Andar apenas através desses métodos da classe base. **/ } public class Cachorro : Animal { /** Cachorro será nossa primeira subclasse que extende Animal. Repare que o símbolo utilizado para indicar a herança é o sinal de dois pontos チオツカ ケケマ public override void FazerBarulho(){ Console.WriteLine("Au"); } /** O método FazerBarulho() foi sobrescrito, repare na palavra-chave override. Ela indica que o método que será chamado será o da classe filha, e não mais o da base. Ou seja, se você chamar cachorroカFazerBarulhoルレカ O resultado será テAuト e não mais テGrunhidoト **/ public override void Comer(){ Console.WriteLine(ぶHumキ ossoぶ); } Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 43 de 125 Vamos ver um trecho de código de exemplo? List<Pessoa> pessoas = new List<Pessoa>(); [...] foreach (Pessoa pessoa in pessoas) { Console.WriteLine(pessoa.name); } A saída desse loop serão os nomes de todas as pessoas que tiverem sido inseridas na lista, em ordem. Caso a lista esteja vazia, o loop não imprimirá nada. Muito prático, não é mesmo? Mas como? O quê o foreach executa por trás das cortinas é isso: IEnumerator<Pessoa> enumerator = pessoas.GetEnumerator(); while (enumerator.MoveNext()) { Pessoa pessoa = enumerator.Current; Console.WriteLine(pessoa.name);} MoveNext() - retorna true se existe outro elemento na lista, e false quando o enumerator chega ao final da lista. Current() - retorna uma referência para o elemento atual. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 48 de 125 classificacao= (entrada > 0) ? "positivo" : "negativo"; Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 57 de 125 A) 2 e 0. B) 10 e 18. C) 10 e 20. D) 12 e 19. E) 12 e 20. Comentários: Nessa questão vamos trabalhar com o operador condicional ternário ‘?’. Como já foi abordado na aula fica fácil, vamos executar o algoritmo? A primeira coisa que devemos fazer é separar as expressões a maior hierarquia é a atribuição, então podemos simplificar para x += expressao1 e y += expressao2; Agora é só resolver as expressões 1 e 2. expressao1: x == 20 ? x/y : y/x; Nossa condição é x == 20? 10 == 20? falso. É retornada a segunda expressão: y/x= 20/10 = 2. Então, expressao1 = 2. E x += 2 é o mesmo que x = x + 2 => x = 12. expressao2: y == 10 ? y/x : x/y; Nossa condição é y == 10? 20 == 10? falso. É retornada a segunda expressão: x/y= 10/20 = 0 (lembre-se que estamos trabalhando com inteiros!). Então, expressao2 = 0 e y -= 0 é o mesmo que y = y - 0 => y = 20. Gabarito: E 11. (VUNESP - 013 -ES TE TÉCNICO - D ENVOLVEDOR) Na linguagem C#, é possível dividir a definição de uma classe em diversos arquivos. Para tanto, é necessário que a declaração da classe contenha a palavra chave: A) split B) partial C) extern D) continue E) abstract Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 58 de 125 Comentários: Apesar de não ter abordado na aula podemos trabalhar por eliminação. Sabemos que ‘abstract’ é a classe que não pode ser instanciada, que precisa ser implementada por outra classe. ‘continue’ é a palavra chave utilizada em loops quando você quer que a iteração continue e que o restante das instruções sejam “puladas”, o ‘extern’ é um modificador que indica que seu método é implementado fora da sua classe. Aí nos sobram split e partial, as duas palavras caberiam, mas se você lembrar que split é na verdade um método para separar strings, sobra apenas o partial Uma classe pode ser dividida em vários arquivos, quando o compilador vê a palavra-chave partial ele sabe que este arquivo é apenas um pedaço da classe. Um exemplo de uso dessas classes parciais são os formulários do Visual Studio, se você adicionar um form em seu projeto, a IDE irá criar dois arquivos, um com a parte do formulário que você pode alterar e outro com o código que é gerado automaticamente. Gabarito: B 12. (VUNESP - 013 -ES TE TÉCNICO - D ENVOLVEDOR) Na linguagem C#, a forma correta de declarar a classe B, derivada da classe A, é: A) public class B inherits A { } B) public class B => A { } C) public class A extends B { } D) public class B : A { } E) public class B implements A { } Comentários: Essa você já sabe não é? Vimos na aula. Em C# a sintaxe é a mesma tanto para herança quanto para a implementação de interfaces. Gabarito: D Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 59 de 125 13. (VUNESP - 013 -ES TE N CO - D ENVOLVEDOR) Na linguagem C#, a palavra reservada “sealed” pode ser utilizada na declaração de classes. Ela tem a função de A) indicar que a classe possui métodos que precisam ser sobrescritos. B) impedir que a classe seja instanciada mais de uma vez. C) impedir que a classe seja derivada por outras classes. D) garantir que a classe não seja instanciada por classes que não estejam no mesmo namespace. E) indicar que o conteúdo da classe é imutável, isto é, uma vez instanciada, seu conteúdo não é mais alterado. Comentários: Esse é um modificador extra da linguagem C# e indica que a classe não pode ser derivada, ou seja não há herança, ela está “selada”, “fechada”. Gabarito: C 14. (AOCP - 012 C -PA - SESSOR TÉCNICO - ALISTA DE SISTEMAS) Em C#, os métodos chamados pelo mecanismo de execução do programa quando o objeto está prestes a ser removido da memória são denominados de A) Garbage Collection. B) Destruidores. C) Propriedades. D) Indexadores. E) Eventos. Comentários: As alternativas deixaram a questão fácil, mas vamos aproveitar e falar um pouquinho dos destrutores ou destruidores. Como o enunciado diz, os destruidores não podem ser chamados explicitamente, quem os chama é o Garbage Collector (Coletor de Lixo). Abaixo um exemplo de destruidor, ele é definido pelo sinal ‘~’ seguido pelo nome da classe. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 60 de 125 class Exemplo { ~Exemplo() { System.Diagnostics.Trace.WriteLine("O destruidor da Classe Exemplo foi chamado."); } } Gabarito: B 15. (AOCP - 012 C -PA - SESSOR TÉCNICO - ALISTA DE SISTEMAS) Analise o seguinte trecho do código C#: Sobre a linha 03 do código apresentado, é correto afirmar que A) a variável y recebe o valor de x se esta última (x) for do tipo int. B) atribui à variável y o valor da variável x convertido para o tipo int. C) passa como parâmetro o valor da variável x para y, do tipo double. D) a variável y recebe por referência o valor da variável x do tipo double. E) multiplica o valor da variável int por x e atribui o valor calculado para a variável y. Comentários: Este é um exemplo do cast que é a conversão pelo compilador de uma variável de um tipo para outro tipo. Várias linguagens fazem o cast. Não é diferente em C#. Gabarito: B 16. (AOCP - 012 C -PA - A SESSOR TÉCNICO - A ALISTA DE SISTEMAS) Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 61 de 125 Segundo a Microsoft, um conjunto de recursos introduzidos no Visual Studio 2010 que estende as capacidades de consultas à sintaxe da linguagem de C# e Visual Basic é conhecido como A) LINQ. B) T-SQL. C) OQL. D) ADO. E) ASP. Comentários: Cabe recurso, pois o LINQ foi introduzido no Visual Studio 2008. Mas realmente os recursos da biblioteca LINQ trazem novas capacidades para que o desenvolvedor trabalhe com consultas. Gabarito: A 17. (AOCP - 012 CE-PA - A SESSOR CNICO - A NISTRADOR DE BANCO DE DADOS) Sobre a linguagem C# assinale a alternativa correta. A) É uma linguagem de programação orientada a objetos, desenvolvida pela Microsoft como parte da plataforma .NET caracterizada por ser fracamente tipada. B) É a única linguagem de programação que suporta herança múltipla pura, ou seja, cada classe pode herdar características de uma ou mais classes. C) A linguagem não suporta ponteiros porque os blocos de códigos requisitariam permissões mais altas de segurança para serem executados. D) O garbage collection é um processo usado para a manutenção do processador evitando erros comuns que podem levar ao encerramento do programa. E) Há três tipos de passagem de parâmetros, por valor, por referência e por saída. Comentários: Vamos comentar os erros de cada alternativa:A. É uma linguagem fortemente tipada. B. Não suporta herança múltipla. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 62 de 125 C. Ponteiros são suportados (int* p - p é um ponteiro para um inteiro). D. O garbage collection é o processo de “coleta de lixo”, através dele objetos que não são mais referenciados podem ser liberados da memória, que fica livre para a utilização por outro objeto. Gabarito: E Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 63 de 125 18. (FCC - 014 ª REGIÃO (SP ) ALISTA JUDICIARIO INFORMATICA) O programa C# apresentado é executado apenas uma vez e finaliza. Para que o programa possa ser executado diversas vezes, até que o usuário digite 0 para finalizá-lo é necessário inserir Console.WriteLine("0. Finaliza."); como mais uma opção do menu e inserir a seguinte instrução de repetição: Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 64 de 125 A) while (opcao != 0) antes do switch, que está na linha 33, com os delimitadores de início e fim { } desta instrução envolvendo as linhas 33 a 44. B) while (opcao != "0") antes do switch, que está na linha 33, com os delimitadores de início e fim { } da instrução envolvendo as linhas 33 a 44. C) for (; ;) { após o delimitador de início de bloco { na linha 26 e uma chave } para fechar o bloco logo após a linha 44. Antes do switch, que está na linha 33, inserir o comando if (opcao == "0") break; D) do antes do switch, que está na linha 33, com o delimitador de início { da instrução envolvendo as linhas 33 a 44, e finalizando com o delimitador de fim } while (opcao != "0"); E) for (opcao=0;opcao<3;opcao++) após o delimitador de início de bloco { na linha 26 com os delimitadores de início e fim { } da instrução envolvendo as linhas 27 a 44. Comentários: Mais uma questão de lógica de programação, vamos verificar todas as alternativas: A - dentro do while, a condição está errado pois 0 é do tipo int e opção é do tipo string isso causará um erro de compilação. B - Caso o while termine na linha 44, o valor da variável opção nunca será atualizado, então caso o usuário selecione a opção = “1”, o programa entrará em um loop infinito, sempre executando o trecho dentro do switch case opcao = “1”. C - Perfeito. Ao colocar o loop for na linha 26, o usuário visualizará novamente o menu e poderá executar o programa quantas vezes desejar. Já que o for não possui condições. Porém, ao colocar o comando ‘if (opcao == "0") break;’ o loop é interrompido quando o usuário selecionar a opção “0”. D - Aqui temos o mesmo problema da letra B. E - Mesmo erro da letra B. E além disso, nesse caso não adianta trabalharmos com o valor de opcao no for, pois ele será sobrescrito pelo valor que o usuário digitar. Então mesmo que o usuário digite a opção 0, não sairá do programa pois a condição continua sendo válida opção é < 3. Gabarito: C 19. (FCC - 014 RF 3ª REGIÃO (SP S) Considerando o programa e a linguagem C#, é correto afirmar: A) Console é uma classe. As classes Object e System herdam desta classe. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 67 de 125 O que ocorre com o programa C#, apresentado abaixo, quando é compilado e posteriormente executado? A) Compila corretamente, executa e imprime o número 45. B) Compila corretamente, executa e imprime o número 9. C) Compila corretamente e executa, mas nunca termina. D) Compila corretamente, mas apresenta erro de execução. E) Apresenta erro na compilação. Comentários: Esta é uma ótima questão para relembrarmos o funcionamento dos arrays e do operador condicional ternário. Primeiramente é declarado um array ‘a’ de inteiros, com 10 posições; Em seguida é declarada a variável auxiliar ‘i’ também inteiro e inicializada com o valor 0 (Lembre-se que o primeiro índice dos vetores é 0 e não 1, então o vetor de tamanho dez irá de a[0] até o a[9]). O loop while irá preencher o vetor ‘a’. A expressão do ternário é a seguinte: i > 0 ? a[i-1] : 0. Então na primeira iteração, o resultado é falso, será retornado o valor da segunda expressão 0. a[0] = 0 + 0 => 0. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 71 de 125 } O resultado produzido no console é: A) PP A PP B) PP PP C) A PP A D) AA P AA E) A A A Comentários: Questão de lógica de programação. Nesse programa temos a classe P que tem o método PP() e a classe E que herda de PP() - lembre-se que o operador “:” (dois pontos) significa herança. Então começamos a executar pelo Main. Primeiro, é criado o objeto d do tipo P, ao chamar o método PP(), já é escrito na saída “PP”, em seguida é criado o objeto s do tipo E. Ele chama o método A(), que escreve no console “A” depois ele chama o método PP(), ele pode pois E herda de P, e escreve no console “PP” novamente. Então a saída fica PP/ A/ PP. Como writeline pula linha, e readkey mantém o cursos no mesmo ponto, letra a. Gabarito: A 27. (FGV - 016 BGE- A ÁLISE SISTEMAS ENVOLVIMENTO DE SISTEMAS) using System; namespace TESTE { Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 75 de 125 Uma strutura ásica o rquivo de ayout é a s guinte: <!DOCTYPE html> <html> <head> <title>@ViewBag.Title</title> </head> <body> <div> @RenderBody() </div> </body> </html> Agora quando você criar uma nova página, poderá utilizar um layout. No Visual Studio, uma nova página é criada através da caixa de diálogo “Add View” (figura abaixo). Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 84 de 125 Sobre o retorno da instrução return RedirectToAction("Index","Servidores"); é correto afirmar que: A) transfere o fluxo navegacional do usuário para a página definida na aplicação MVC como Default Web Site, ou seja, Index; B) transfere o fluxo navegacional do usuário para a Action Index do Controller Servidores; C) transfere o fluxo navegacional do usuário para a página Servidores abaixo do diretório Index; D) a substituição da instrução RedirectToAction("Index","Servidores"); por Redirect("Index","Servidores"); não traria alteração de resultado para a aplicação; E) a instrução RedirectToAction("Index",”Servidores”) retorna um ActionResult, que é subtipo de ViewResult. Comentários: Você já sabe o funcionamento do método RedirectToAction, lembre-se o primeiro parâmetro é a action, o segundo (opcional), é a classe controller. Então ficou fácil: a) index não é página, é action. b) certo. c) servidores também não é página, é controller, e index não é diretório. d) daria erro de compilação o método Redirect recebe uma string apenas de parâmetro, que deve ser uma URI. e) dois erros, o retorno é RedirectToRouteResult (resultado do redirecionamento)e o ActionResult não é subtipo de ViewResult é o contrário. Gabarito: B Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 86 de 125 Comentários: O valor da propriedade AutoEventWireup indica se os eventos das páginas ASP.NET será conectado automaticamente as funções padrão do framework para tratamento de eventos. Quando seu valor é true, os eventos são associados dependendo de seu nome e assinatura. Para cada evento, o ASP.NET procura por um método que é nomeado com o seguinto padrão: Page_eventname. Como por exemplo, Page_Load ou Page_Init. Gabarito: E 10. (VUNESP - 013 E-ES AG NTE TÉCNICO - ENVOLVEDOR) Como os servidores web tratam cada requisição de forma independente, o ASP.NET oferece diversas opções de gerenciamento de estado para persistir os dados entre as requisições dos usuários. Sobre a persistência de dados, a diferença entre o estado de sessão (Session state) e o estado de visualização (View state) é que A) o estado de sessão fornece persistência dos dados entre múltiplas páginas de uma aplicação web, enquanto o estado de visualização fornece persistência dos dados para uma única página da aplicação. B) apesar de ambos terem a mesma função, o estado de sessão fica armazenado na máquina do cliente, enuanto o estado de visualização fica armazenado no servidor. C) o estado de sessão fornece persistência dos dados entre usuários de uma mesma aplicação, enquanto o estado de visualização fornece persistência para um único usuário. D) o estado de visualização fornece persistência dos dados entre múltiplas páginas de uma aplicação web, enquanto o estado de sessão fornece persistência dos dados para uma única página da aplicação. E) ambos são armazenados na máquina do cliente, no entanto, o estado de sessão utiliza uma criptografia de chave simétrica para proteger os dados. Comentários: Como vimos na aula a sessão pode ser salva a nível de página (view state) ou a nível de aplicação (session state). Ambos são armazenados no cliente através de cookies e podem ser criptografados ou não. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 87 de 125 Gabarito: A 11. (CESPE - 013 E-ES ALISTA ADMINISTRATIVO - NFORMÁTICA) Com base em aplicações web, assinale a opção correta. A) Para validar usuários, o Form Authentication utiliza credenciais que devem ser armazenadas no arquivo de configuração da aplicação. B) Utilizando-se ASP, é impossível, nos casos em que o browser não suporta o uso de cookies, passar informações de uma página para outra em uma aplicação. C) No LINQ, os métodos que implementam operadores de consulta padrão devem ser chamados com o uso da sintaxe de métodos estáticos. D) Usando-se ADO.NET, a conexão com um data source fornece as informações de autenticação necessárias e deve ser feita com a utilização de um objeto Connection, que depende do tipo de data source adotado. E) No Padrão MVC, as regras do negócio que definem a forma de acesso e modificação dos dados são geridas pelo controlador. Comentários: Esta questão aborda vários assuntos, vamos analisar item a item: a) as credenciais de autenticação podem ser armazenadas em banco de dados. b) é possível utilizando-se paraâmetros passados pelos requests GET e POST. c) essa é cruel, o correto seria os métodos que extendem operadores de consulta padrão. d) certo. e) as regras de negócio vêm do modelo. Gabarito: D 12. (AOCP - 012 C -PA - SSESSOR TÉCNICO - ALISTA DE SISTEMAS) Segundo a Microsoft, a plataforma de aplicativos da web, unificada, que oferece os serviços necessários para a criação e a implantação de aplicativos corporativos da web, é conhecida como A) XML. B) C#.NET. C) ASP.NET. D) Web Server. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 88 de 125 E) ADO.NET. Comentários: Uma questãozinha de graça para relaxar rs. A plataforma é o ASP.NET. Gabarito: C 13. (FUNCAB - 012 P -RO - ALISTA JUDICIÁRIO - P OGRAMADOR DE COMPUTADORES) O texto abaixo foi extraído da biblioteca MSDN, disponível no site Microsoft. Sobre o mesmo, é INCORRETO afirmar que: A) o tema abordado refere-se à critpografia de informações disponíveis em arquivos de configuração. B) as seções appSettings, connectionStrings, identify e sessionState são sessões que normalmente contêm informações que merecem mecanismos de segurança. C) Web.config é um exemplo de arquivo de configuração. D) os mecanismos de criptografia e descriptografia não comprometem a performance; portanto, a recomendação é, por segurança, criptografar todas as seções dos arquivos de configuração. E) a seção identify pode conter credenciais de apresentação. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 89 de 125 Comentários: Essa questão é pura interpretação de inglês. Mas é interessante perseber algumas seções de um arquivo de configuração ASP.NET. Como o texto diz é recomendado que apenas algumas seções sejam criptografadas, aquelas com dados sensíveis. Gabarito: D 14. (FUNCAB - 012 P -RO - A ALISTA JUDICIÁRIO - P OGRAMADOR DE COMPUTADORES) Suponha que você queira desenvolver uma página web, conforme imagem abaixo, onde: • a lista CIDADE será carregada com as cidades da UF selecionada na lista UF. • a lista BAIRRO será carregada com os bairros da cidade selecionada na lista CIDADE. • sempre que um novo item for selecionado na lista UF ou na lista CIDADE, as demais listas deverão ser recarregadas de acordo com os novos itens selecionados. O ASP.NET AJAX extender que deve ser utilizado para reproduzir este tipo de comportamento é: A) ListSearch. B) AutoComplete. C) DropDown. D) ComboBox. E) CascadingDropDown. Comentários: Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 90 de 125 O ASP.NET suporta AJAX, o componente que permite que os DropDowns sejam atualizados de forma encadeada é o CascadingDropDown. Vejamos os outros: a) ListSearch permite que conteúdos de um dropdown sejam pesquisados conforme a entrada do usuário, o foco vai para o item pesquisado, mas a lista não é filtrada. b) AutoComplete permite que os itens sejam filtrados conforme a entrada do usuário. c) O Dropdown é mais completo que um select normal pois permite marcação e links, é muito usádo para submenus. d) O ComboBox é parecido com o AutoComplete, porém é mais recomendado quando se tem poucas opções. Gabarito: E 15. (CESGRANRIO - 014 B CO DA AMAZÔNIA - CNICO CIENTÍFICO - SUPORTE E INFRAESTRUTURA) Quais são os três modelos de desenvolvimento diferentes suportados por ASP.Net? A) Web Apps, Web Forms e Web Grid B) Web Forms, MVC e Web Grid C) Web Pages, MVC e Web Apps D) Web Pages, MVC e Web Forms E) Web Pages, Web Grid e Web Forms Comentários: Vimos na aula que os principais modelos de desenvolvimento de aplicações do ASP.Net são MVC e Web Forms. Além disso também existe o modelo mais simple de Web Pages. Gabarito: D 16. (CESGRANRIO - 012 E - ALISTA DE GESTÃO CORPORATIVA - TECNOLOGIA DA INFORMAÇÃO) Considere que uma aplicação WEB em ASP.NET na linguagem C# contém classes X e Y, cujos trechos relevantes estão apresentados a seguir. public class X { public int Foo() { return 2; } public virtualint Bar() { return 1; } } public class Y: X { Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 91 de 125 public new int Foo() { return 0; } public override int Bar() { return 5; } } Seja o conteúdo do corpo do método manipulador do evento Load da página principal dessa aplicação o trecho de código a seguir. X x = new X(); Y y = new Y(); int v1 = x.Foo(); int v2 = x.Bar(); int v3 = y.Foo(); int v4 = y.Bar(); int v5 = ((X)y).Foo(); int v6 = ((X)y).Bar(); ResponseカWriteルvÜ〉ト テ〉vä〉ト テ〉vë〉ト テ〉vï〉ト テ〉 vö〉ト テ〉vÜレエ Quando a aplicação exibir com sucesso, em um navegador, a página WEB resultante de sua execução, qual será a sequência de números apresentada nessa página principal? A) 0 5 0 5 0 5 B) 2 1 0 5 0 5 C) 2 1 0 5 2 1 D) 2 1 0 5 2 5 E) 2 1 2 1 2 1 Comentários: O método manipulador do evento load executa no carregamento da página. A classe Y está extendendo a classe X e sobreescrevendo o método Bar(). Vamos executar instrução por instrução: int v1 = x.Foo(); // v1 = 2 int v2 = x.Bar(); // v2 = 1 int v3 = y.Foo(); // v3 = 0 int v4 = y.Bar(); // v4 = 5 int v5 = ((X)y).Foo(); // v5 = 2, foi feito o cast, então é buscado o método foo da classe X. int v6 = ((X)y).Bar(); // v6 = 5, apesar do cast, y continua sendo uma subclasse de x e como o método Bar() foi sobrescrito, o valor do método de y (5) é retornado. Gabarito: D Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 92 de 125 17. (CESGRANRIO - 010 E - ALISTA DE GESTÃO CORPORATIVA - TECNOLOGIA DA INFORMAÇÃO) Um órgão federal disponibiliza serviços na Internet utilizando a plataforma ASP.NET, versão 3.5. Um dos objetivos da tecnologia LINQ dessa plataforma é A) substituir, gradativamente, o AJAX. B) simplificar o acesso a dados. C) permitir tipagem dinâmica de variáveis. D) realizar testes automatizados. E) consumir web service genéricos. Comentários: Já sabemos que o LINQ (Language Integrated Query (Linguagem de Consultas Integrada) é uma biblioteca que facilita o acesso a dados, simplificando a criação de consultas. Gabarito: B 18. (CESGRANRIO - 010 ETROBRAS ALISTA DE STEMAS UPORTE BASIS SAP R/3) Analise o fragmento de código a seguir. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 93 de 125 Qual o objetivo desse código? A) Alterar dados da tabela “Customers” de um banco de dados. B) Apresentar o resultado de uma consulta em um banco de dados em um navegador. C) Enviar um e-mail para todos os clientes de uma empresa. D) Criar um arquivo .mdb com o dump com alguns dados da tabela “Customers”. E) Escrever, em um banco relacional, as entradas de dados do usuário. Comentários: Este trecho é do ASP clássico. Veja, primeiro uma conexão com o banco é criada, depois o sql com apenas um select é executado. Na segunda parte, uma tabela é renderizada com os valores retornados. Os dados não são alterados, não aparece Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 100 de 125 O Microsoft Visual Studio Team Foundation Server 2010 é a nova plataforma colaborativa da Microsoft. Essa plataforma pode ser utilizada em substituição ao sistema de controle de versão conhecido como A) Team Explorer Everywhere B) Work Item Tracking C) Application Lifecycle Management D) Visual SourceSafe E) Development Platform Support 12. (FGV - 016 BGE- NÁLISE D SISTEMAS ENVOLVIMENTO DE SISTEMAS) Com relação aos arquivos XAML do framework .NET produzidos pela IDE do Visual Studio durante o processo de desenvolvimento de uma aplicação móvel para o Windows Phone 8.1, analise as afirmativas a seguir: I. Um arquivo XAML deve ter mais de um elemento raiz. II. Window, Page, ResourceDictionary e Application são elementos do tipo raiz. III. O namespace padrão do WPF é o http://schemas.microsoft.com/winfx/2006/xaml/presentation. Está correto somente o que se afirma em: A) I B) II C) I e II D) I e III E) II e III Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 106 de 125 B) partial C) extern D) continue E) abstract 12. (VUNESP - 013 -ES AG TE TÉCNICO - ENVOLVEDOR) Na linguagem C#, a forma correta de declarar a classe B, derivada da classe A, é: A) public class B inherits A { } B) public class B => A { } C) public class A extends B { } D) public class B : A { } E) public class B implements A { } 13. (VUNESP - 013 -ES TE TÉCNICO - D ENVOLVEDOR) Na linguagem C#, a palavra reservada “sealed” pode ser utilizada na declaração de classes. Ela tem a função de A) indicar que a classe possui métodos que precisam ser sobrescritos. B) impedir que a classe seja instanciada mais de uma vez. C) impedir que a classe seja derivada por outras classes. D) garantir que a classe não seja instanciada por classes que não estejam no mesmo namespace. E) indicar que o conteúdo da classe é imutável, isto é, uma vez instanciada, seu conteúdo não é mais alterado. 14. (AOCP - 012 C -PA - A SESSOR TÉCNICO - A ALISTA DE SISTEMAS) Em C#, os métodos chamados pelo mecanismo de execução do programa quando o objeto está prestes a ser removido da memória são denominados de A) Garbage Collection. B) Destruidores. C) Propriedades. D) Indexadores. E) Eventos. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 107 de 125 15. (AOCP - 012 -PA - SESSOR TÉCNICO - ALISTA DE SISTEMAS) Analise o seguinte trecho do código C#: Sobre a linha 03 do código apresentado, é correto afirmar que A) a variável y recebe o valor de x se esta última (x) for do tipo int. B) atribui à variável y o valor da variável x convertido para o tipo int. C) passa como parâmetro o valor da variável x para y, do tipo double. D) a variável y recebe por referência o valor da variável x do tipo double. E) multiplica o valor da variável int por x e atribui o valor calculado para a variável y. 16. (AOCP - 012 -PA - SESSOR TÉCNICO - ALISTA DE SISTEMAS) Segundo a Microsoft, um conjunto de recursos introduzidos no Visual Studio 2010 que estende as capacidades de consultas à sintaxe da linguagem de C# e Visual Basic é conhecido como A) LINQ. B) T-SQL. C) OQL. D) ADO. E) ASP. 17. (AOCP - 012 CE-PA - A SESSOR CNICO - A NISTRADOR DE BANCO DE DADOS) Sobre a linguagem C# assinale a alternativa correta. A) É uma linguagem de programação orientada a objetos, desenvolvida pela Microsoft como parte da plataforma .NET caracterizada por ser fracamente tipada. B) É a única linguagem de programação que suporta herança múltipla pura, ou seja, cada classe pode herdar características de uma ou mais classes. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 108 de 125 C) A linguagem não suporta ponteiros porque os blocos de códigos requisitariam permissões mais altas de segurança para serem executados. D) O garbage collection é um processo usado para a manutençãodo processador evitando erros comuns que podem levar ao encerramento do programa. E) Há três tipos de passagem de parâmetros, por valor, por referência e por saída. 18. (FCC - 014 ª REGIÃO (SP ) ALISTA JUDICIARIO INFORMATICA) Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 109 de 125 O programa C# apresentado é executado apenas uma vez e finaliza. Para que o programa possa ser executado diversas vezes, até que o usuário digite 0 para finalizá-lo é necessário inserir Console.WriteLine("0. Finaliza."); como mais uma opção do menu e inserir a seguinte instrução de repetição: A) while (opcao != 0) antes do switch, que está na linha 33, com os delimitadores de início e fim { } desta instrução envolvendo as linhas 33 a 44. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 119 de 125 C) recebam parâmetros do tipo System.EventArgs. D) retornam um dado do tipo System.Event. E) respeitam um padrão de nomenclatura predefinido. 10. (VUNESP - 013 E-ES NTE TÉCNICO - ENVOLVEDOR) Como os servidores web tratam cada requisição de forma independente, o ASP.NET oferece diversas opções de gerenciamento de estado para persistir os dados entre as requisições dos usuários. Sobre a persistência de dados, a diferença entre o estado de sessão (Session state) e o estado de visualização (View state) é que A) o estado de sessão fornece persistência dos dados entre múltiplas páginas de uma aplicação web, enquanto o estado de visualização fornece persistência dos dados para uma única página da aplicação. B) apesar de ambos terem a mesma função, o estado de sessão fica armazenado na máquina do cliente, enuanto o estado de visualização fica armazenado no servidor. C) o estado de sessão fornece persistência dos dados entre usuários de uma mesma aplicação, enquanto o estado de visualização fornece persistência para um único usuário. D) o estado de visualização fornece persistência dos dados entre múltiplas páginas de uma aplicação web, enquanto o estado de sessão fornece persistência dos dados para uma única página da aplicação. E) ambos são armazenados na máquina do cliente, no entanto, o estado de sessão utiliza uma criptografia de chave simétrica para proteger os dados. 11. (CESPE - 013 E-ES ALISTA ADMINISTRATIVO - NFORMÁTICA) Com base em aplicações web, assinale a opção correta. A) Para validar usuários, o Form Authentication utiliza credenciais que devem ser armazenadas no arquivo de configuração da aplicação. B) Utilizando-se ASP, é impossível, nos casos em que o browser não suporta o uso de cookies, passar informações de uma página para outra em uma aplicação. C) No LINQ, os métodos que implementam operadores de consulta padrão devem ser chamados com o uso da sintaxe de métodos estáticos. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 120 de 125 D) Usando-se ADO.NET, a conexão com um data source fornece as informações de autenticação necessárias e deve ser feita com a utilização de um objeto Connection, que depende do tipo de data source adotado. E) No Padrão MVC, as regras do negócio que definem a forma de acesso e modificação dos dados são geridas pelo controlador. 12. (AOCP - 012 C -PA - A SESSOR TÉCNICO A ALISTA DE SISTEMAS) Segundo a Microsoft, a plataforma de aplicativos da web, unificada, que oferece os serviços necessários para a criação e a implantação de aplicativos corporativos da web, é conhecida como A) XML. B) C#.NET. C) ASP.NET. D) Web Server. E) ADO.NET. 13. (FUNCAB - 012 P -RO - A ALISTA JUDICIÁRIO - P OGRAMADOR DE COMPUTADORES) O texto abaixo foi extraído da biblioteca MSDN, disponível no site Microsoft. Sobre o mesmo, é INCORRETO afirmar que: A) o tema abordado refere-se à critpografia de informações disponíveis em arquivos de configuração. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 121 de 125 B) as seções appSettings, connectionStrings, identify e sessionState são sessões que normalmente contêm informações que merecem mecanismos de segurança. C) Web.config é um exemplo de arquivo de configuração. D) os mecanismos de criptografia e descriptografia não comprometem a performance; portanto, a recomendação é, por segurança, criptografar todas as seções dos arquivos de configuração. E) a seção identify pode conter credenciais de apresentação. 14. (FUNCAB - 012 P -RO - ALISTA JUDICIÁRIO - P OGRAMADOR DE COMPUTADORES) Suponha que você queira desenvolver uma página web, conforme imagem abaixo, onde: • a lista CIDADE será carregada com as cidades da UF selecionada na lista UF. • a lista BAIRRO será carregada com os bairros da cidade selecionada na lista CIDADE. • sempre que um novo item for selecionado na lista UF ou na lista CIDADE, as demais listas deverão ser recarregadas de acordo com os novos itens selecionados. O ASP.NET AJAX extender que deve ser utilizado para reproduzir este tipo de comportamento é: A) ListSearch. B) AutoComplete. C) DropDown. D) ComboBox. E) CascadingDropDown. Curso de Desenvolvimento de Software para Concursos Profs. Diego Carvalho e Leon Sólon – Aula 12 Profs. Diego Carvalho e Leon Sólon www.estrategiaconcursos.com.br Pág. 123 de 125 E) 2 1 2 1 2 1 17. (CESGRANRIO - 010 E - ALISTA DE GESTÃO CORPORATIVA - TECNOLOGIA DA INFORMAÇÃO) Um órgão federal disponibiliza serviços na Internet utilizando a plataforma ASP.NET, versão 3.5. Um dos objetivos da tecnologia LINQ dessa plataforma é A) substituir, gradativamente, o AJAX. B) simplificar o acesso a dados. C) permitir tipagem dinâmica de variáveis. D) realizar testes automatizados. E) consumir web service genéricos. 18. (CESGRANRIO - 010 ETROBRAS ALISTA DE STEMAS UPORTE BASIS SAP R/3) Analise o fragmento de código a seguir. Qual o objetivo desse código? A) Alterar dados da tabela “Customers” de um banco de dados.
Compartilhar