Exercício para treino da Prova 4

Propaganda
MAB224- PROGRAMAÇÃO DE COMPUTADORES II - ENGENHARIA (BÁSICO) /POLI-UFRJ
Exercício para treino da Prova 4:
Neste exercício você deve escrever as classes: Livro, Capitulo, e Paragrafo.
A idéia é que um livro possui vários capítulos, e um capítulo possui vários parágrafos.
1. Cada instância de Livro tem os seguintes atributos:
- título (string)
- autor (string)
- capítulos (list) – uma lista com os capítulos desse Livro
Crie um construtor para essa classe com o método __init__, recebe titulo e autor como
parâmetros, e inicializa a lista de capítulos.
2. Cada instância de Capitulo deve ter os atributos:
- livro (Livro) – o Livro a que pertence o capítulo)
- titulo (string)
- paragrafos (list) – uma lista com os parágrafos do livro.
O construtor do capítulo cria o primeiro parágrafo. O texto do parágrafo é o título do capítulo. O
número de linhas antes e depois desse parágrafo deve ser 3. Se quiser sofisticar um pouco, tente
colocar o título do capítulo no centro da linha, ou aproximadamente.
3. Cada instância de Paragrafo deve ter os atributos:
- capitulo (Capitulo) - o capitulo a que pertence o parágrafo.
- texto (string) – a string que contém o texto deste parágrafo
- desloc (int) – o deslocamento que queremos apenas para a primeira linha do parágrafo (o
valor default pode ser 5 espaços).
- linhasAntes (int) - o número de linhas em branco antes de iniciar o parágrafo. O valor
default pode ser 0.
- linhasDepois (int) – o número de linhas em branco depois do final do parágrafo. O valor
default pode ser 1.
Crie um construtor para a classe Paragrafo, que recebe os parâmetros acima, usando valores
default para os três últimos.
4. Métodos da classe Livro:
a) imprimir() – esse método imprime todos os capítulos do livro da seguinte forma:
- Imprime uma linha com o título do livro, e outra em seguida com o autor.
- Imprime uma linha em branco.
Em seguida imprime todos os capítulos, usando o método imprimir() da classe Capítulo.
b) salvar(nome_arquivo) – esse método salva o livro no disco, usando o pickle, no arquivo de
nome dado pelo parâmetro nome_arquivo. Nesse método, leve em conta que pode ocorrer
uma exceção do tipo IOError.
c) recuperar (nome_arquivo) – esse método lê o arquivo que foi serializado no disco, restaura o
livro, e retorna uma referência para o livro recuperado. Nesse método, leve em conta que
pode ocorrer uma exceção do tipo IOError.
5. Métodos da classe Capítulo:
a) imprimir() – esse método imprime os parágrafos do capítulo em sequencia, usando para cada
um o método imprimir() da classe Paragrafo. Após imprimir todos os parágrafos, o método
pula uma linha, e imprime uma linha no formato abaixo:
=========== Fim do Capítulo <nome do capítulo> =============
6) Métodos da classe Paragrafo:
a) imprimir() – esse método deve avançar o número de linhas dado pelo atributo linhasAntes,
imprimir o texto do parágrafo, e depois avançar o número de linhas dado pelo atributo
linhasDepois. Antes de começar a imprimir o texto, deve colocar o número de espaços dado
pelo atributo desloc.
Exemplo de teste:
livro = Livro("Python para todos", "Miguel Jonathan")
intr = Capitulo(livro,"Introdução")
listas = Capitulo(livro,"Listas")
texto = 'Python é uma linguagem muito usada atualmente por ser flexivel e ter
muitas estruturas de dados pré-definidas. Neste capítulo vamos dar uma visão
geral desta linguagem.'
Paragrafo(intr, texto)
texto = "Python é também uma linguagem orientada a objetos"
Paragrafo (intr, texto)
texto = "Listas são estruturas indexadas pré-definidas. São estruturas mutáveis,
ou seja, permitem alterar seus valores."
Paragrafo (listas, texto)
livro.imprimir()
livro.salvar()
livro = None
livro = Livro().recuperar()
livro.titulo = "Livro Recuperado"
livro.imprimir()
Abaixo está a saída impressa na tela para esse teste:
>>>
Python para todos
Miguel Jonathan
Introdução
Python é uma linguagem muito usada atualmente por ser flexivel e ter
muitas estruturas de dados pré-definidas. Neste capítulo vamos dar uma visão
geral da linguagem.
Python é também uma linguagem orientada a objetos
============Fim do Capitulo Introdução==============
Listas
Listas são estruturas indexadas pré-definidas. São estruturas mutáveis, ou
seja, permitem alterar seus valores.
============Fim do Capitulo Listas==============
Livro Recuperado
Miguel Jonathan
Introdução
Python é uma linguagem muito usada atualmente por ser flexivel e ter
muitas estruturas de dados pré-definidas. Neste capítulo vamos dar uma visão
geral da linguagem.
Python é também uma linguagem orientada a objetos
============Fim do Capitulo Introdução==============
Listas
Listas são estruturas indexadas pré-definidas. São estruturas mutáveis, ou
seja, permitem alterar seus valores.
============Fim do Capitulo Listas==============
Download