Buscar

Codificação do projeto padrões de programação e projeto do banco de dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

WBA0449_v1.0
CODIFICAÇÃO DO PROJETO: 
PADRÕES DE PROGRAMAÇÃO 
E PROJETO DO BANCO DE DADOS 
APRENDIZAGEM EM FOCO
2
APRESENTAÇÃO DA DISCIPLINA
Autoria: Thiago Salhab Alves
Leitura crítica: Anderson Paulo Avila Santos
Na disciplina Codificação do projeto: padrões de programação 
e projeto do banco de dados, será trabalhado o paradigma de 
programação orientada a objetos, utilizando as linguagens de 
programação Java, C#, Python e Ruby e o projeto e implementação 
do banco de dados, por meio do projeto conceitual, lógico e físico 
do banco de dados relacional, com a programação SQL. Vamos 
conhecer os conteúdos que serão explorados em nossas aulas.
No tema 1, serão trabalhados os conceitos de programação 
orientada a objetos, apresentando o histórico do paradigma 
orientado a objetos e conceitos de classes e objetos. Serão 
abordados o histórico da linguagem Java, conceitos de classes, 
atributos e métodos, acessibilidade de uma classe, exemplo de 
codificação e herança em Java e sintaxe. Será trabalhada também 
a linguagem C#, conceitos de classes e objetos, implementação de 
classe em C#, instanciação de objetos e herança em C#. 
No tema 2, será estudado o histórico de Python e Ruby, 
apresentando as características de Python e Ruby. Será trabalhada 
a instalação do Python, criação de classes e herança em Python. 
Para a linguagem Ruby, serão abordados a instalação, criação de 
classes e herança em Ruby. 
No tema 3, será visto o projeto do banco de dados relacional, 
aprendendo sobre os projetos conceituais, por meio do modelo 
entidade-relacionamento (MER), por meio dos conceitos de 
Entidade, Atributos, Relacionamento e Cardinalidade. No 
projeto lógico, será estudado o mapeamento das entidades e 
3
relacionamentos para o esquema relacional por meio do processo 
de normalização do modelo conceitual.
Para finalizar, no tema 4, serão trabalhados os procedimentos 
de programação em banco de dados, conhecendo a linguagem 
SQL, por meio dos comandos DDL (Data Definition Language), 
com os comandos Create, Alter e Drop e DML (Data Manipulation 
Language) com os comandos Insert, Update, Delete e Select.
INTRODUÇÃO
Olá, aluno (a)! A Aprendizagem em Foco visa destacar, de maneira 
direta e assertiva, os principais conceitos inerentes à temática 
abordada na disciplina. Além disso, também pretende provocar 
reflexões que estimulem a aplicação da teoria na prática 
profissional. Vem conosco!
TEMA 1
Procedimento de programação 
orientado a objeto: Java e C# 
______________________________________________________________
Autoria: Thiago Salhab Alves
Leitura crítica: Anderson Paulo Ávila Santos
5
DIRETO AO PONTO
Com a alta demanda por software, construí-los de maneira 
rápida, correta e econômica continua a ser um objetivo. Qualquer 
elemento pode ser representado como um objeto de software, 
desde que possua atributos, por exemplo, nome, cor e tamanho, 
além de comportamentos como calcular, mover e comunicar. 
A implementação orientada a objetos é muito mais produtiva 
do que com as técnicas anteriormente populares, como a 
programação estruturada, principalmente pela reutilização de 
código. Programas orientados a objetos são muitas vezes mais 
fáceis de entender, corrigir e modificar (DEITEL; DEITEL, 2017).
No Java e C#, uma unidade de programa chamada classe é criada 
para armazenar um conjunto de métodos para executar suas 
tarefas. Por exemplo, uma classe que representa uma conta 
bancária pode conter um método para fazer depósitos em 
dinheiro, outro para fazer saques e um terceiro para perguntar 
sobre o saldo atual. Para executar uma tarefa em um programa, é 
necessário um método que armazene sua instrução que executa a 
tarefa.
Da mesma forma, os objetos têm atributos que são incorporados 
quando usados em um programa. Esses são especificados como 
parte da classe de objeto. Por exemplo, o atributo de saldo do 
objeto de conta bancária representa o valor disponível. Todo 
objeto de conta bancária conhece o saldo que representa, mas 
não o de outras contas bancárias (DEITEL; DEITEL, 2017).
Classes (e seus objetos) encapsulam, isto é, contêm seus atributos 
e métodos e estão intimamente relacionados. Os objetos podem 
se comunicar entre si, mas eles, em geral, não sabem como outros 
6
objetos são implementados, pois os detalhes de implementação 
permanecem ocultos dentro dos próprios objetos.
Java também apresenta um recurso chamado herança, em que 
uma classe (chamada subclasse) pode herdar as características 
de uma classe existente (chamada superclasse), podendo 
adicionar seus aspectos próprios. Um objeto, por exemplo, da 
classe conversível, certamente, é um objeto da classe mais geral 
automóvel.
Um objetivo-chave do Java é ser capaz de escrever programas 
a serem executados em uma grande variedade de sistemas 
computacionais e dispositivos controlados por computador. Isso, 
às vezes, é chamado de “escreva uma vez, execute em qualquer 
lugar” (DEITEL; DEITEL, 2017).
O termo polimorfismo é uma tradução em português do 
termo análogo em inglês polymorphic, que é a contração das 
palavras poly (muitos) e morphic (formas), ou seja, muitas 
formas. Na programação orientada a objetos, polimorfismo é 
a capacidade que um método de um objeto possui de assumir 
formas diferentes para a sua execução. O uso de polimorfismo, 
representados na Figura 1, na linguagem C#, pode ocorrer a partir 
de três formas diferentes de aplicação, são elas (MANZANO, 2014):
• O polimorfismo paramétrico ocorre quando são utilizadas 
estruturas preestabelecidas de operação. Cada cenário 
possui uma ação preestabelecida.
• O polimorfismo de inclusão ocorre quando um recurso 
de uma classe-filho instancia um recurso sobre a classe-pai. 
Essa é a forma mais simples de construção polimórfica, pois 
a classe-pai herda algum recurso advindo da classe-filho.
7
• O polimorfismo de sobrecarga ocorre quando são usados 
vários métodos com o mesmo nome de identificação, mas 
que possuem número de parâmetros diferentes. Essa é a 
forma de polimorfismo mais simples, comum e essencial. 
Curiosamente, há profissionais na nossa área que não 
aceitam essa forma como sendo uma ação polimórfica.
Figura 1 – Tipos de polimorfismo
Fonte: elaborada pelo autor.
Referências bibliográficas
DEITEL, P.; DEITEL, H. Java como programar. 10. ed. São Paulo: 
Pearson Education do Brasil, 2017.
MANZANO, J. A. N. G. Programação de computadores com C#. 
São Paulo: Érica, 2014. 
8
PARA SABER MAIS
A orientação a objetos oferece uma grande contribuição para o 
projeto e desenvolvimento de sistemas: o polimorfismo. A palavra 
polimorfismo vem do grego poli morfos e significa muitas formas 
(DEITEL; DEITEL, 2017).
Na orientação a objetos, no polimorfismo, entidades diferentes 
podem ser tratadas de forma semelhante conferindo versatilidade 
aos programas e classes que se beneficiam dessas características.
A forma mais simples de polimorfismo é a sobrecarga de métodos 
(method overload), ou seja, é a possibilidade de existirem em uma 
mesma classe vários métodos com o mesmo nome. Para que 
eles tenham o mesmo nome e possam ser identificados, eles 
devem possuir assinaturas diferentes. A assinatura (signature) 
de um método é uma lista que indica os tipos de todos os seus 
argumentos, sendo assim, métodos com mesmo nome são 
considerados diferentes se recebem um diferente número ou tipo 
de argumento, e têm, portanto, uma assinatura diferente (DEITEL; 
DEITEL, 2017).
No exemplo da Figura 2, temos na classe Sobrecarga a 
implementação de três métodos denominados duplo, que 
tomam um único argumento, retornando o valor que é o dobro 
do valor do argumento recebido. Por meio da sobrecarga, foram 
implementadas três versões do método duplo, cada uma capaz de 
receber um argumento de tipo diferente. Na prática, é como se o 
método fosse capaz de processar argumentos de tipos diferentes, 
o que, para o usuário da classe, é transparente e resulta na 
operação desejada.
9
Figura 2 – Polimorfismo
Fonte:elaborada pelo autor.
Referências bibliográficas
DEITEL, P.; DEITEL, H. Java como programar. 10. ed. São Paulo: 
Pearson Education do Brasil, 2017.
TEORIA EM PRÁTICA
Reflita sobre a seguinte situação: uma empresa de 
desenvolvimento de sistemas necessita atualizar seus sistemas 
para o paradigma orientado a objetos. Muitos dos sistemas foram 
desenvolvidos em Delphi, de forma estruturada, e a demanda 
por portabilidade e novos recursos de programação, tais como 
herança e polimorfismo, presentes na programação orientada a 
objetos, tem feito com que a empresa necessitasse mudar para 
10
Lorem ipsum dolor sit amet
Autoria: Nome do autor da disciplina
Leitura crítica: Nome do autor da disciplina
as linguagens Java e C#. Foi atribuído a você a implementação de 
um cadastro de clientes, que pode ser tanto pessoa física quanto 
jurídica. Para esse cadastro, é necessário informar nome, e-mail, 
telefone, endereço (rua, número, bairro, CEP, cidade, estado), 
data de nascimento, sexo, CPF ou CNPJ. Faça a implementação em 
Java ou C# da classe Cliente, levando em consideração a herança 
(ClienteFisico e ClienteJuridico), contendo os atributos e métodos 
para cadastrar e exibir os dados cadastrados. Faça a proposta e 
apresente-as, em forma de relatório, ao responsável pelo projeto.
Para conhecer a resolução comentada proposta pelo 
professor, acesse a videoaula deste Teoria em Prática no 
ambiente de aprendizagem.
LEITURA FUNDAMENTAL
Indicação 1
Este artigo teve como objetivo o desenvolvimento de um sistema 
auxiliar de aprendizagem de programação em Java (JPLAS) que 
oferece vários tipos de problemas de exercícios para cobrir 
estudos em diferentes níveis, com foco nos conhecimentos 
sobre encapsulamento, herança, polimorfismo, os conceitos 
fundamentais de programação orientada a objetos (OOP). Para 
realizar a leitura, acesse a plataforma EBSCOhost, na Biblioteca 
Virtual da Kroton, e busque pelo título da obra.
ZAW, K. K. et al. An informative test code approach in code writing 
problem for three object-oriented programming concepts in Java 
Programming Learning Assistant System. IAENG International 
Journal of Computer Science, [s. l.], v. 46, n. 3, p. 445-453, 2019.
Indicações de leitura
11
Indicação 2
Este artigo teve como objetivo descrever a ontologia CSCRO e o 
sistema Sharp RDF, usados juntos para analisar semanticamente 
o código-fonte C#. A ontologia do CSCRO formalmente descreve o 
domínio da linguagem de programação C#, na qual os conceitos 
são representados como classes, propriedades e indivíduos. Para 
realizar a leitura, acesse a plataforma EBSCOhost, na Biblioteca 
Virtual da Kroton, e busque pelo título da obra.
EPURE, C.; IFTENE, A. Semantic analysis of source code in object 
oriented programming. A case study for C#. Romanian Journal of 
Human – Computer Interaction, [s. l.], v. 9, n. 2, p. 103-118, 2016. 
QUIZ
Prezado aluno, as questões do Quiz têm como propósito a 
verificação de leitura dos itens Direto ao Ponto, Para Saber 
Mais, Teoria em Prática e Leitura Fundamental, presentes 
neste Aprendizagem em Foco.
Para as avaliações virtuais e presenciais, as questões serão 
elaboradas a partir de todos os itens do Aprendizagem em 
Foco e dos slides usados para a gravação das videoaulas, 
além de questões de interpretação com embasamento no 
cabeçalho da questão.
1. Com a alta demanda por software, construir softwares de 
maneira rápida, correta e econômica continua a ser um 
objetivo. Neste contexto, complete as lacunas da sentença a 
seguir: 
 
12
No Java e C#, é criada uma unidade de programa chamada 
_____________ para armazenar o conjunto de _____________ que 
executam as ____________ dela. 
 
Assinale a alternativa que completa adequadamente as 
lacunas:
a. Classe; métodos; tarefas. 
b. Objeto; atributos; operações.
c. Método; classes; recursos.
d. Atributo; objetos; operações.
e. Herança; métodos; tarefas. 
2. A implementação orientada a objetos é muito mais 
produtiva do que com as técnicas anteriormente 
populares, como a programação estruturada. Neste 
contexto, complete as lacunas da sentença a seguir: 
 
Um _____________ possui __________ que ele incorpora 
à medida que é usado em um programa. Eles são 
especificados como parte da __________ do objeto.
a. Atributo; objetos; propriedade.
b. Objeto; atributos; classe.
c. Método; atributos; característica.
d. Objeto; métodos; classe.
e. Método; objetos; propriedade. 
13
GABARITO
Questão 1 - Resposta A
Resolução: Na programação orientada a objetos, tais como 
na linguagem Java e C#, é criada uma unidade de programa 
chamada classe para armazenar o conjunto de métodos que 
executam as tarefas dela. 
Questão 2 - Resposta B
Resolução: Um objeto, da mesma forma, tem atributos que 
ele incorpora à medida que é usado em um programa. Esses 
atributos são especificados como parte da classe do objeto. 
TEMA 2
Procedimento de programação 
orientado a objeto: Python e 
Ruby 
______________________________________________________________
Autoria: Thiago Salhab Alves
Leitura crítica: Anderson Paulo Ávila Santos
15
DIRETO AO PONTO
Python é uma linguagem robusta, dinâmica, interpretada e 
multiplataforma, que foi criada no final de 1989 por Guido van 
Rossum, sendo uma linguagem livre (até para projetos comerciais), 
podendo programar para desktops, web e mobile. Na linguagem 
Python, tudo é tratado como objetos, por exemplo, os tipos de 
dados (BANIN, 2018).
Classes definem estruturas de dados que contêm instâncias de 
atributo, de método e classes aninhadas. No Python, classe e tipo 
de objeto são sinônimos. Todo objeto Python tem uma classe 
(tipo) derivada direta ou indiretamente da classe interna do objeto 
Python. Ela determina o que é e como operá-lo. Uma classe 
encapsula dados, operações e semânticas (PERKOVIC, 2016).
Python é uma linguagem de programação orientada a objetos. 
Uma classe é definida como um conjunto de valores dentro de seu 
intervalo operacional. Elas ajudam na abstração de modularidade 
e complexidade. Os usuários da classe só podem usar os métodos 
fornecidos por ela para manipular objetos instanciados a partir 
dela (BANIN, 2018).
Classes diferentes costumam ter características comuns, podem 
compartilhar o mesmo valor e executar a mesma operação. No 
Python, esses relacionamentos são expressos usando derivação 
e herança. O objeto é instanciado pela classe. Cada instância 
(objeto) em um programa Python possui seu próprio espaço para 
nome.
A classe criada é chamada de classe de objeto (tipo classobj). Os 
nomes no namespace são chamados de atributo da classe. As 
funções definidas são chamadas de métodos. Ao criar um objeto, 
16
o namespace herda todos os nomes namespace em que o objeto 
reside. Os nomes no espaço de nomes da instância são chamados 
de atributos da instância (BANIN, 2018).
Outra linguagem de programação de extrema importância é a 
Ruby, considerada puramente orientada a objetos, já que tudo em 
Ruby é um objeto. Édinamicamente, implicitamente e fortemente 
tipada, isto quer dizer que, a cada interação, o tipo é verificado, 
que Ruby detecta o tipo automaticamente e todas fazem as 
variáveis possuem um tipo. O def é uma palavra-chave do Ruby 
para a definição de métodos (SOUZA, 2014).
Para não precisar adicionar sempre todos os métodos em todo 
objeto que criamos, Ruby possui classes, que atuam como fábricas 
(molde) de objetos. Possibilitam a criação de objetos já incluindo 
alguns métodos. Todo objeto em Ruby possui o método class, que 
retorna à classe que originou este objeto (SOUZA, 2014).
Um método pode chamar outro do próprio objeto. Para fazer 
isso, basta usar a referência especial self, que aponta para o 
próprio objeto. Isso é semelhante a outras linguagens, como Java 
e C #. Todo método Ruby é chamado em algum objeto, ou seja, 
o método é sempre uma mensagem enviada ao objeto. Se não 
especificado, o destino da mensagem é sempre self (MCGAVREN, 
2015).
Atributos ou variáveis de instânciasão sempre privados na 
linguagem Ruby e começam com @. Não há como alterá-los de 
fora da classe; apenas os métodos de um objeto podem alterar 
os seus atributos. Podemos fazer com que algum código seja 
executado na criação de um objeto. Para isso, todo objeto pode 
ter um método especial, chamado de initialize. Os initializers são 
métodos privados (não podem ser chamados de fora da classe) e 
podem receber parâmetros (MCGAVREN, 2015).
17
Referências bibliográficas
BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem 
didática. São Paulo: Érica, 2018.
MCGAVREN, J. Head First Ruby: A brain friendly guide. 1. ed. 
Sebastopol: O’Reilly, 2015. 
PERKOVIC, L. Introdução à computação usando Python: um foco 
no desenvolvimento de aplicações. 1. ed. Rio de Janeiro: LTC, 2016.
SOUZA, L. Ruby: aprenda a programar na linguagem mais 
divertida. São Paulo: Casa do Código, 2014. 
PARA SABER MAIS
A linguagem Python permite o uso de herança múltipla, 
permitindo que uma classe herde comportamentos de várias 
outras. A Figura 1 ilustra um exemplo de herança múltipla em 
Python. São definidas duas classes, Homem e Aranha. Cada uma 
tem seu método construtor. A classe Homem recebe o idioma, 
e a Aranha, teia e venenosa. A classe HomemAranha é filha das 
classes Homem e Aranha.
18
Figura 1 – Herança múltipla em Python
class Homem(object):
 def __init__(self, idioma, *args, **kwargs):
 super().__init__(*args, **kwargs)
 self.idioma = idioma
class Aranha(object):
 def __init__(self, teia, venenosa, *args, **kwargs):
 super().__init__(*args, **kwargs)
 self.teia = teia
 self.venenosa = venenosa
class HomemAranha(Aranha, Homem):
 def __init__(self, idioma, teia, venenosa):
 super(HomemAranha, self).__init__(idioma=idioma, 
teia=teia, venenosa=venenosa)
obj = HomemAranha(‘ingles’, False, True)
print(obj.lingua)
print(obj.teia)
print(obj.venenosa)
Fonte: elaborada pelo autor.
19
Com a herança múltipla, uma classe pode herdar as características de 
mais de uma classe, compartilhando valores comuns e executando as 
mesmas operações.
Referências bibliográficas
BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem 
didática. São Paulo: Érica, 2018.
PERKOVIC, L. Introdução à computação usando Python: um foco 
no desenvolvimento de aplicações. 1. ed. Rio de Janeiro: LTC, 2016.
TEORIA EM PRÁTICA
Reflita sobre a seguinte situação: uma software house está 
contratando profissionais para desenvolvimento de sistemas 
em Python e Ruby. Um dos grandes diferenciais que a empresa 
irá oferecer é um treinamento completo e certificação nas 
linguagens. Para adquirir a vaga, foi proposto um desafio no 
formato de implementação, em Python ou Ruby, realizando 
a construção de um cadastro de estudante, que pode ser de 
graduação e pós-graduação. Para o cadastro do estudante, 
é necessário informar nome, e-mail, telefone, endereço (rua, 
número, bairro, CEP, cidade, estado), data de nascimento, sexo, 
CPF, tipo de curso e curso. A classe Graduacao e PosGraduacao 
devem herdar os comportamentos da classe Estudante, contendo 
a classe Graduacao o TCC e estágio, e a classe PosGraduacao, o 
artigo. Faça a implementação em Python ou Ruby apresentando 
a solução, em forma de relatório, ao responsável pela software 
house.
20
Para conhecer a resolução comentada proposta pelo 
professor, acesse a videoaula deste Teoria em Prática no 
ambiente de aprendizagem.
LEITURA FUNDAMENTAL
Indicação 1
Este artigo tem como objetivo discutir a importância do 
conhecimento em programação de computadores na pesquisa 
científica, os benefícios do uso do Python para os pesquisadores, 
a importância do aspecto da comunidade para o aumento 
da adoção do Python e as etapas para instalar e usar o kit de 
ferramentas do Python. Para realizar a leitura, acesse a plataforma 
EBSCOhost, na Biblioteca Virtual da Kroton, e busque pelo título da 
obra.
PERKEL, J. M. Programming: Pick up Python. Nature, [s. l.], v. 518, 
n. 7.537, p. 125-126, 2015.
Indicação 2
Este artigo tem como objetivo apresentar o quanto a linguagem 
de programação Ruby tem a oferecer a qualquer cientista com 
dados eletrônicos para processar, permitindo a criação rápida de 
aplicativos relativamente complexos, mantendo o código curto e 
legível. Para realizar a leitura, acesse a plataforma EBSCOhost, na 
Biblioteca Virtual da Kroton, e busque pelo título da obra.
Indicações de leitura
21
AERTS, J.; LAW, A. An introduction to scripting in Ruby for 
biologists. BMC Bioinformatics, [s. l.], v. 10, p. 221-229, 2009. DOI 
10.1186/1471-2105-10-221. . 
QUIZ
Prezado aluno, as questões do Quiz têm como propósito a 
verificação de leitura dos itens Direto ao Ponto, Para Saber 
Mais, Teoria em Prática e Leitura Fundamental, presentes 
neste Aprendizagem em Foco.
Para as avaliações virtuais e presenciais, as questões serão 
elaboradas a partir de todos os itens do Aprendizagem em 
Foco e dos slides usados para a gravação das videoaulas, 
além de questões de interpretação com embasamento no 
cabeçalho da questão.
1. Considere a seguinte afirmação: 
 
Frequentemente, classes Python e Ruby diferentes possuem 
características comuns. As classes diferentes podem 
compartilhar valores comuns e podem executar as mesmas 
operações. 
 
Neste contexto, assinale a alternativa que apresenta o recurso 
descrito na afirmação:
a. Herança. 
b. Polimorfismo.
c. Encapsulamento.
d. Objeto.
22
e. Classe. 
2. Considere a afirmação: 
 
Um método em Ruby pode invocar outro método do 
próprio objeto. Para isto, basta usar uma referência 
especial, que aponta para o próprio objeto. 
 
Neste contexto, assinale a alternativa que apresenta a 
referência descrita na afirmação:
a. This.
b. Self.
c. Super.
d. Init.
a. Obj. 
GABARITO
Questão 1 - Resposta A
Resolução: A herança é o recurso que permite que as classes 
possam compartilhar valores comuns e executar as mesmas 
operações sem a necessidade de reescrevê-los. 
Questão 2 - Resposta B
Resolução: Um método pode invocar outro do próprio 
objeto. Para isto, basta usar uma referência especial self, que 
aponta para o próprio objeto. 
TEMA 3
Modelagem de banco de dados e 
o projeto do fluxo de dados
______________________________________________________________
Autoria: Thiago Salhab Alves
Leitura crítica: Anderson Paulo Ávila Santos
24
DIRETO AO PONTO
Um banco de dados é um conjunto de dados que se relacionam, 
representando informações sobre um domínio específico, ou seja, 
informações agrupadas que se relacionam e tratam de um mesmo 
assunto específico (SILBERCHATZ; KORTH; SUDARSHAN, 2012). 
O objetivo do sistema de banco de dados é fazer com que 
os usuários não tenham necessidade de conhecer detalhes 
internos do banco (promover a abstração de dados) e oferecer 
a independência dos dados e do aplicativo. (ELMASRI; NAVATHE, 
2019).
O sistema de banco de dados deve garantir uma visão abstrata 
completa para o usuário, ou seja, não importa qual unidade de 
armazenamento é usada para armazenar seus dados, desde que 
estejam disponíveis quando necessário. O nível abstrato é dividido 
em três (SILBERCHATZ; KORTH; SUDARSHAN, 2012):
• Nível de visualização do usuário: é a parte do banco de 
dados que o usuário pode acessar.
• Nível conceitual: faz a definição dos dados que estão 
armazenados e o relacionamento entre eles.
• Nível físico: define como os dados estão armazenados, 
sendo o nível mais baixo da abstração.
O projeto de banco de dados se dá em duas fases:
• Modelagem conceitual.
• Projeto lógico.
25
No modelo conceitual, definem-se quais dados serão exibidos no 
banco de dados, independente de como será sua implementação. 
O modelo lógico do banco de dados relacional define as tabelas 
e suas colunas (campos) sem se preocupar com detalhes de 
armazenamento (SILBERCHATZ; KORTH; SUDARSHAN, 2012). A 
Figura 1 ilustra a representação dos projetos de banco de dados. 
O processo inicia com um Mini-mundo, que contém a situação 
que necessita de um banco dedados. Desse Mini-mundo, são 
extraídos os requisitos do sistema. O primeiro projeto é o Projeto 
Conceitual, responsável por identificar entidades, atributos e os 
relacionamentos entre as entidades. Desse projeto, obtém-se o 
Esquema Conceitual (Modelo Entidade Relacionamento). Com 
o Projeto Lógico, realiza-se o refinamento, derivando as chaves 
estrangeiras por meio do processo de normalização. Com o 
esquema lógico, determina-se o Projeto Físico, com o esquema 
das tabelas em linguagem SQL, etapa esta que depende do SGBD 
utilizado.
Figura 1 – Representação dos projetos de banco de dados
Fonte: elaborada pelo autor.
26
Referências bibliográficas
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. 
São Paulo: Pearson Education, 2019. 
SILBERCHATZ, A. et al. Sistema de banco de dados. 6. ed. São 
Paulo: Campus, 2012. 
PARA SABER MAIS
O projeto conceitual de banco de dados, por meio do modelo 
entidade-relacionamento, apresenta a limitação de não poder 
representar relacionamentos entre relacionamentos. A agregação 
é uma abstração por meio da qual eles são tratados como 
entidades de nível superior, sendo um modelo estendido que 
possibilita a herança. A Figura 2 ilustra a representação da 
agregação no modelo entidade-relacionamento (SILBERCHATZ; 
KORTH; SUDARSHAN, 2012).
27
Figura 2 – Herança múltipla em Python
Fonte: elaborada pelo autor.
Um conjunto-entidade pode ser dividido em categorias, cada 
qual com atributos específicos. Este processo é chamado de 
generalização e especialização. 
Por que definir subclasses especializadas?
• Certos atributos aparecem somente em alguma(s) 
subclasse(s).
• Alguns relacionamentos se aplicam apenas a determinadas 
subclasses.
A generalização/especialização pode ser total ou parcial. Na 
total, toda instância da superclasse (Cliente) precisa estar 
associada a uma instância correspondente de alguma subclasse 
(Pessoa Física ou Pessoa Jurídica). Na parcial, pode haver instância 
da superclasse (Funcionário) sem instância correspondente em 
nenhuma subclasse (Motorista ou Secretária). A Figura 3 ilustra 
a representação da generalização/especialização do tipo total e 
parcial no modelo entidade-relacionamento (ELMASRI; NAVATHE, 
2019). 
28
Figura 3 – Representação da generalização/especialização no 
modelo entidade-relacionamento
Fonte: elaborada pelo autor.
A generalização/especialização pode ser exclusiva e não 
exclusiva. Na exclusiva, cada instância da superclasse (Pessoa) 
pode estar associada a, no máximo, uma instância de uma 
subclasse (Pessoa Física ou Pessoa Jurídica). Na não exclusiva, 
uma instância da superclasse (Pessoa) pode estar associada a até 
uma instância de cada uma das subclasses (Professor, Funcionário 
ou Aluno). A Figura 4 ilustra a representação da generalização/
especialização exclusiva e não exclusiva no modelo entidade-
relacionamento (ELMASRI; NAVATHE, 2019).
29
Figura 4 – Representação da generalização/especialização 
exclusiva e não exclusiva no modelo entidade-relacionamento
Fonte: elaborada pelo autor.
Referências bibliográficas
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. 
São Paulo: Pearson Education, 2019. 
SILBERCHATZ, A. et al. Sistema de banco de dados. 6. ed. São 
Paulo: Campus, 2012.
TEORIA EM PRÁTICA
Reflita sobre a seguinte situação: uma loja de produtos 
colecionáveis está necessitando de um sistema de controle de 
estoque e para registro de suas vendas. A loja vende personagens 
colecionáveis, canecas, chaveiros, jogos de tabuleiros, 
dentre outros produtos. Hoje a organização realiza todo o 
armazenamento de suas vendas em Excel, dificultando o controle 
do estoque. O estabelecimento gostaria de um sistema que 
efetuasse o cadastro de clientes, produtos, fornecedores, compra 
e venda de produtos. Realize a proposta de um modelo entidade-
30
relacionamento que apresente a modelagem das entidades, 
atributos e relacionamentos para o projeto de uma base de dados 
relacional para a loja de produtos colecionáveis.
Para conhecer a resolução comentada proposta pelo 
professor, acesse a videoaula deste Teoria em Prática no 
ambiente de aprendizagem.
LEITURA FUNDAMENTAL
Indicação 1
Este artigo tem como objetivo aprimorar o processo de 
normalização de banco de dados, propondo um algoritmo até a 
terceira forma normal. Para realizar a leitura, acesse a plataforma 
EBSCOhost, na Biblioteca Virtual da Kroton, e busque pelo título da 
obra.
BURA, D.; SINGH, R. K. Implementing constraints in entity-
relationship models for enhancing normalization. IUP Journal of 
Information Technology, [s.l.], v. 8, n. 2, p. 46-57, 2012.
Indicação 2
Este artigo tem como objetivo apresentar a proposta de uma série 
de técnicas para o projeto de banco de dados, em que os autores 
fizeram a proposta de uma notação para entidade-relacionamento 
adaptada da Linguagem de Modelagem Unificada (UML). Para 
realizar a leitura, acesse a plataforma EBSCOhost, na Biblioteca 
Virtual da Kroton, e busque pelo título da obra.
Indicações de leitura
31
THOMPSON, C. B.; SWARD, K. Modeling and teaching techniques 
for conceptual and logical relational database design. Journal of 
Medical Systems, [s.l.], v. 29, n. 5, p. 513-525, 2005. 
QUIZ
Prezado aluno, as questões do Quiz têm como propósito a 
verificação de leitura dos itens Direto ao Ponto, Para Saber 
Mais, Teoria em Prática e Leitura Fundamental, presentes 
neste Aprendizagem em Foco.
Para as avaliações virtuais e presenciais, as questões serão 
elaboradas a partir de todos os itens do Aprendizagem em 
Foco e dos slides usados para a gravação das videoaulas, 
além de questões de interpretação com embasamento no 
cabeçalho da questão.
1. Considere a seguinte afirmação: 
 
Uma coleção de dados inter-relacionados, representando 
informações sobre um domínio específico. 
 
Neste contexto, assinale a alternativa que representa a 
afirmação: 
a. Banco de dados. 
b. Modelagem de dados.
c. Projeto de dados.
d. Sistema de dados.
e. Modelo de dados. 
32
2. Considere a afirmação: 
 
Um conjunto-entidade pode ser dividido em categorias, 
cada qual com atributos específicos. 
 
Neste contexto, assinale a alternativa que representa a 
afirmação:
a. Herança.
b. Relacionamento.
c. Agregação.
d. Generalização/especialização.
e. Chave estrangeira. 
GABARITO
Questão 1 - Resposta A
Resolução: Um banco de dados é uma coleção de dados 
inter-relacionados, representando informações sobre um 
domínio específico, ou seja, sempre que for possível agrupar 
informações que se relacionam e tratam de um mesmo 
assunto, posso dizer que tenho um banco de dados. 
Questão 2 - Resposta D
Resolução: Um conjunto-entidade pode ser dividido em 
categorias, cada qual com atributos específicos. Este processo 
é chamado de generalização e especialização. 
TEMA 4
Procedimentos de programação 
em banco de dados utilizando a 
linguagem SQL 
______________________________________________________________
Autoria: Thiago Salhab Alves
Leitura crítica: Anderson Paulo Ávila Santos
34
DIRETO AO PONTO
SQL (Structured Query Language) é o conjunto de comandos de 
manipulação de banco de dados utilizado para criar e manter 
a estrutura desses bancos de dados, além de incluir, excluir, 
modificar e pesquisar informações em suas tabelas (ELMASRI; 
NAVATHE, 2019). 
A linguagem SQL não é uma linguagem de programação 
autônoma, podendo ser chamada de “sublinguagem”. Quando se 
escrevem aplicações para banco de dados, é necessário utilizar 
uma linguagem de programação tradicional e embutir comandos 
SQL para manipular os dados (ELMASRI; NAVATHE, 2019). 
A Linguagem SQL é dividida nos seguintes componentes, 
conforme a Figura 1:
• Data Definition Language (DDL): permite a criação dos 
componentes do banco de dados, como tabelas. São 
comandos DDL: CREATE SQUEMA, CREATE TABLE, DROP 
SQUEMA e DROP TABLE.
• Data Manipulation Language (DML): permite a 
manipulação dos dados armazenados no banco de dados. 
São comandos DML:INSERT, DELETE e UPDATE.
• Data Query Language (DQL): permite extrair dados do 
banco de dados. O comando DQL utilizado é o SELECT.
• Data Control Language (DCL): permite controlar as 
permissões de acesso e uso aos objetos do banco de dados. 
São comandos DCL: GRANT e REVOKE.
35
Figura 1 – Componentes da linguagem SQL
Fonte: elaborada pelo autor.
Tabelas são as estruturas mais importantes de um banco de 
dados relacional. Nelas estará o conteúdo que representa cada 
objeto do mundo real, cuja importância para o funcionamento do 
sistema justifica a sua criação. As próprias tabelas criadas ficam 
armazenadas em tabelas internas do gerenciador de banco de 
dados. É o chamado dicionário de dados. Com a utilização do 
36
dicionário de dados, as informações das tabelas ficam sempre à 
disposição do usuário e permitem um controle maior do que está 
sendo armazenado (ELMASRI; NAVATHE, 2019). 
Restrição de chave primária é a coluna, ou o grupo de colunas, que 
permite identificar um único registro na tabela. Para especificar 
que uma coluna ou um grupo de colunas representa a chave 
primária de uma tabela, deve-se acrescentar a palavra-chave 
PRIMARY KEY seguida do nome da(s) coluna(s). 
Chave estrangeira é o campo que estabelece o relacionamento 
entre duas tabelas. Assim, uma coluna, ou um grupo de colunas, 
de uma tabela corresponde à mesma coluna, ou grupo de colunas, 
que é a chave primária de outra tabela. Dessa forma, deve-se 
especificar na tabela que contém a chave estrangeira quais são 
essas colunas e à qual tabela está relacionada. Veja que o banco 
de dados irá verificar se todos os campos que fazem referência à 
tabela estão especificados.
Ao determinar esse tipo de relacionamento, fica garantida a 
integridade das informações. Os valores presentes na(s) coluna(s) 
definida(s) como chave estrangeira devem ter um correspondente 
na outra tabela, caso contrário, o banco de dados deve retornar 
uma mensagem de erro. É normal que, ao tentar excluir um 
registro de uma tabela, o banco de dados verifique se há chaves 
estrangeiras relacionadas a esse registro. Se houver, também será 
retornado um erro impedindo essa operação.
Referências bibliográficas
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. 
São Paulo: Pearson Education, 2019. 
37
PARA SABER MAIS
Em uma consulta SQL utilizando o comando SELECT, o uso do 
* significa que serão retornados todos os atributos da tabela. 
Considere como exemplo os códigos apresentados na Figura 2. 
A primeira instrução retorna todos os dados contidos na tabela 
Employee dos empregados que trabalham do departamento 
de código DNO igual a 5. A segunda instrução retorna todos os 
atributos dos empregados que trabalham no departamento de 
nome DNAME igual a Research (ELMASRI; NAVATHE, 2019).
Figura 2 – Consultas SQL retornando todos os atributos
Fonte: elaborada pelo autor.
A linguagem SQL também faz uso de algumas funções de 
agregação, sendo a função COUNT (conta a quantidade de 
registros), MAX (determina o maior valor dentre um conjunto de 
registros), MIN (determina o menor valor dentre um conjunto 
de registros) e AVG (determina a média dentre um conjunto de 
registros). A Figura 3 apresenta exemplos do uso dessas funções. 
A primeira instrução retorna o maior salário, o menor salário e 
o salário médio de todos os empregados. A segunda instrução 
38
retorna o maior salário, o menor salário e o salário médio de 
todos os empregados que trabalham no departamento Research 
(ELMASRI; NAVATHE, 2019).
Figura 3 – Consultas SQL utilizando funções de agregação 
 
Fonte: elaborada pelo autor.
Em muitos casos, necessita-se aplicar as funções agregadas 
para subgrupos de tuplas em uma relação. Cada um consiste 
no conjunto de tuplas que têm o mesmo valor para o atributo 
de agrupamento. A função é aplicada a cada subgrupo 
independentemente. SQL tem uma cláusula GROUP BY para 
especificar os atributos de agrupamento, que também deve 
aparecer na cláusula SELECT. A Figura 4 apresenta exemplo 
do uso dessa função. A primeira instrução retorna para cada 
departamento o número, o número de empregados e a média 
salarial. A segunda instrução retorna para cada projeto o número, 
o nome e o número de empregados que trabalham no projeto 
(ELMASRI; NAVATHE, 2019). 
39
Figura 4 – Consultas SQL utilizando função GROUP BY
Fonte: elaborada pelo autor.
Dessa forma, você aprendeu sobre os comandos para retorno de 
todos os atributos (*), funções de agregação COUNT, MAX, MIN e 
AVG e a função de agrupamento GROUP BY.
Referências bibliográficas
ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 7. ed. 
São Paulo: Pearson Education, 2019.
TEORIA EM PRÁTICA
Reflita sobre a seguinte situação: uma loja de produtos 
colecionáveis está necessitando de um sistema de controle de 
estoque e para registro de suas vendas. A loja vende personagens 
colecionáveis, canecas, chaveiros, jogos de tabuleiros, 
dentre outros produtos. Hoje a organização realiza todo o 
armazenamento de suas vendas em Excel, dificultando o controle 
do estoque. O estabelecimento gostaria de um sistema que 
40
efetuasse o cadastro de clientes, produtos, fornecedores, compra 
e venda de produtos. Você já realizou a construção do modelo 
entidade-relacionamento, realize agora a proposta da criação das 
tabelas utilizando a linguagem SQL.
Para conhecer a resolução comentada proposta pelo 
professor, acesse a videoaula deste Teoria em Prática no 
ambiente de aprendizagem.
LEITURA FUNDAMENTAL
Indicação 1
Este artigo discute o impacto da linguagem SQL em relação 
às representações de dados. Para realizar a leitura, acesse a 
plataforma EBSCOhost, na Biblioteca Virtual da Kroton, e busque 
pelo título da obra.
HELLAND, P. The singular success of SQL. Communications of the 
ACM, [s.l.], v. 59, n. 8, p. 38-41, 2016. DOI 10.1145/2948983.
Indicação 2
Este artigo apresenta uma revisão dos diferentes tipos de 
ataques de injeção de SQL e as técnicas de detecção e prevenção 
existentes contra ataques de injeção de SQL. Para realizar a 
leitura, acesse a plataforma EBSCOhost, na Biblioteca Virtual da 
Kroton, e busque pelo título da obra.
Indicações de leitura
41
SADOTRA, P.; SHARMA, C. SQL Injection impact on web server and 
their risk mitigation policy implementation techniques: an ultimate 
solution to prevent computer network from illegal intrusion. 
International Journal of Advanced Research in Computer 
Science, [s.l.], v. 8, n. 3, p. 678-686, 2017. 
QUIZ
Prezado aluno, as questões do Quiz têm como propósito a 
verificação de leitura dos itens Direto ao Ponto, Para Saber 
Mais, Teoria em Prática e Leitura Fundamental, presentes 
neste Aprendizagem em Foco.
Para as avaliações virtuais e presenciais, as questões serão 
elaboradas a partir de todos os itens do Aprendizagem em 
Foco e dos slides usados para a gravação das videoaulas, 
além de questões de interpretação com embasamento no 
cabeçalho da questão.
1. SQL (Structured Query Language) é o conjunto de comandos 
de manipulação de banco de dados utilizado para criar e 
manter a estrutura desses bancos de dados. Nesse contexto, 
considere a seguinte afirmação: 
 
Permite a criação dos componentes do banco de dados, como 
tabelas. 
 
Assinale a alternativa que apresente o grupo de componentes 
a que se refere a afirmação anterior: 
42
a. Data Definition Language (DDL). 
b. Data Modeling Language (DML).
c. Data Query Language (DQL).
d. Data Creation Language (DCL). 
e. Data Use Language (DUL).. 
2. Considere a afirmação: 
 
É utilizado para identificar um único registro em uma 
tabela. 
 
Neste contexto, assinale a alternativa que representa a 
afirmação:
a. Chave estrangeira.
b. Chave primária.
c. Chave candidata.
d. Chave principal.
e. Chave secundária. 
GABARITO
Questão 1 - Resposta A
Resolução: O Data Modeling Language (DML) é um grupo de 
elementos que permite a criação dos componentes do banco 
de dados, como tabelas. 
Questão 2 - Resposta B
Resolução: A chaveprimária é a coluna, ou o grupo de 
colunas, que permite identificar um único registro na tabela. 
BONS ESTUDOS!
	Apresentação da disciplina
	Introdução
	TEMA 1
	Direto ao ponto
	Para saber mais
	Teoria em prática
	Leitura fundamental
	Quiz
	Gabarito
	TEMA 2
	Direto ao ponto
	TEMA 3
	Direto ao ponto
	TEMA 4
	Direto ao ponto
	Botão TEMA 5: 
	TEMA 2: 
	Botão 158: 
	Botão TEMA4: 
	Inicio 2: 
	Botão TEMA 6: 
	TEMA 3: 
	Botão 159: 
	Botão TEMA5: 
	Inicio 3: 
	Botão TEMA 7: 
	TEMA 4: 
	Botão 160: 
	Botão TEMA6: 
	Inicio 4: 
	Botão TEMA 8: 
	TEMA 5: 
	Botão 161: 
	Botão TEMA7: 
	Inicio 5:

Outros materiais