Analise e documente a biblioteca C#
O Copilot pode propor uma explicação, mas o código e o comportamento observado são a
autoridade. #codebase faz recuperação de contexto; não garante que todos os arquivos-fonte
foram inspecionados nem que toda alegação esteja correta.
Resumo do laboratório

Ilustração conceitual original (SVG)
| Em resumo | Sua rota |
|---|---|
| Nível e tempo | 200; 45 minutos (estimativa de facilitação) |
| Ação inicial | Siga uma operação de empréstimo do console até o armazenamento e seus testes. |
| Materiais do aluno | Baixe 02-csharp.zip |
| Workspace | Abra a raiz do kit extraído; execute a baseline de . relativa a essa raiz |
| Verificação inicial esperada | Os testes fornecidos passam. Os novos requisitos de funcionalidade ainda precisam de testes próprios. |
| Ajuda de configuração | Baixe, extraia, Git local e GitHub opcional |
[!NOTE] As referências de origem devem nomear tipos reais, registros e diretórios de trabalho.
Conceitos · Primeira tarefa · Lista de evidências · Redefinir
Objetivos de aprendizagem
- Rastreie o comportamento pelo console, pelo núcleo da aplicação e pela infraestrutura.
- Explique com precisão exemplares físicos de livros, empréstimos e usuários da biblioteca.
- Produza instruções de execução que funcionem a partir de um diretório declarado.
Antes de começar
Conclua a configuração de C# e prepare 02-csharp.
A fixture incluída é
AccelerateDevGHCopilot.
Não é necessário clonar um repositório remoto nem criar um novo repositório GitHub.
Conceitos e casos de uso
| Camada | Responsabilidade | Evidências a inspecionar |
|---|---|---|
| Console | Menu/entrada e apresentação | Program.cs, ConsoleApp.cs |
| Núcleo da aplicação | Decisões sobre empréstimos/associações e interfaces | Serviços, entidades, interfaces |
| Infraestrutura | Carregar/preencher/salvar JSON | JsonData, repositórios JSON |
| Testes | Contratos selecionados de serviços com substitutos | tests/UnitTests |
Cenário do exercício
Um colega entregou uma pequena aplicação de console de biblioteca sem documentação suficiente de integração. Escreva um README que diferencie funcionalidades implementadas, limitações e trabalho proposto.
Tarefa 1 - Estabeleça a fonte e a linha de base
-
Abra a raiz preparada. Inspecione os quatro arquivos de projeto.
-
Execute:
dotnet build src/Library.Console/Library.Console.csproj -m:1 -p:UseSharedCompilation=false dotnet test tests/UnitTests/UnitTests.csproj -m:1 -p:UseSharedCompilation=false -
Registre os comandos, testes, erros e avisos. Não copie uma transcrição de outra execução.
-
Leia
src/Library.Console/appSettings.json. O console usa seu diretório de trabalho para localizar esse arquivo e o diretórioJson.
Tarefa 2 - Peça um rastreamento fundamentado nas fontes
Trace returning a loan from ConsoleApp through ILoanService and the JSON repository.
Cite the files and relevant methods. Explain how Book, BookItem, Loan, and Patron
relate. List unverified assumptions and existing error-handling limitations.
Do not edit or publish anything.
Verifique cada relação manualmente. Um título de livro não é um BookItem físico.
Um Loan relaciona um exemplar físico a um usuário da biblioteca e contém suas próprias datas.
---
config:
theme: base
look: classic
themeVariables:
darkMode: false
background: "#ffffff"
primaryColor: "#f5f5f5"
primaryTextColor: "#111111"
primaryBorderColor: "#555555"
secondaryColor: "#e0e0e0"
secondaryTextColor: "#111111"
secondaryBorderColor: "#666666"
tertiaryColor: "#bdbdbd"
tertiaryTextColor: "#111111"
tertiaryBorderColor: "#444444"
lineColor: "#444444"
textColor: "#111111"
mainBkg: "#f5f5f5"
nodeBorder: "#555555"
clusterBkg: "#ffffff"
clusterBorder: "#999999"
edgeLabelBackground: "#ffffff"
actorBkg: "#e0e0e0"
actorBorder: "#555555"
actorTextColor: "#111111"
actorLineColor: "#777777"
signalColor: "#333333"
signalTextColor: "#111111"
labelBoxBkgColor: "#f5f5f5"
labelBoxBorderColor: "#777777"
labelTextColor: "#111111"
loopTextColor: "#111111"
activationBkgColor: "#bdbdbd"
activationBorderColor: "#555555"
noteBkgColor: "#f5f5f5"
noteTextColor: "#111111"
noteBorderColor: "#777777"
attributeBackgroundColorOdd: "#f5f5f5"
attributeBackgroundColorEven: "#e0e0e0"
---
classDiagram
accTitle: Limites de dependência da biblioteca C#
accDescr: O console depende de contratos de serviços, os serviços da aplicação dependem de contratos de repositórios e a infraestrutura JSON implementa o comportamento de armazenamento.
class ConsoleApp
class LoanService
class ILoanRepository
class JsonLoanRepository
class JsonData
ConsoleApp --> LoanService : invoca pelo contrato de serviço
LoanService --> ILoanRepository : depende de
JsonLoanRepository ..|> ILoanRepository : implementa
JsonLoanRepository --> JsonData : carrega e persiste
Legenda. Os retângulos são tipos do código. As setas contínuas são dependências/chamadas; a seta tracejada de realização indica implementação de interface.
Explicação. O diagrama descreve papéis de dependência, não comprova que todos os caminhos de falha são testados. Confirme os registros reais de DI e os métodos desta fixture em vez de presumir um modelo genérico de “arquitetura limpa”.
Tarefa 3 - Planeje e escreva um README útil
-
Em Plan, esboce configuração, diretório de execução, arquitetura, arquivos de dados, testes, fluxos implementados, limitações e restauração.
-
Exija referências às fontes para cada alegação.
-
Em Agent, escreva somente o README. Não “melhore” o código de produção durante uma tarefa de documentação.
-
Documente esta inicialização do console a partir do projeto copiado:
cd src/Library.Console dotnet run --no-build -
Explique que operações de devolução/renovação podem modificar o JSON na cópia; use registros sintéticos e inspecione as alterações antes da restauração.
Verifique seu trabalho
- Todos os comandos de execução incluem seu diretório de trabalho.
- O comportamento implementado está separado de ideias para funcionalidades futuras.
- O diagrama corresponde aos tipos reais e aos registros de DI.
- O escopo dos testes é descrito sem uma porcentagem de cobertura fabricada.
- Somente a documentação mudou no diff do exercício.
Solução de problemas
Se o Copilot descrever classes que nunca leu, anexe e inspecione esses arquivos. Se o console não conseguir encontrar as configurações, corrija o diretório de trabalho documentado. Se o README disser que todos os casos extremos estão cobertos, peça o teste específico que comprova cada um.
Prática independente
Escreva uma entrada de solução de problemas para um arquivo JSON ausente usando o comportamento real do carregador. Não prometa recuperação controlada quando o código lança uma exceção ou apenas registra uma falha.
Restauração
Salve as evidências da documentação, restaure somente o README do exercício e quaisquer registros JSON modificados pela exploração manual e feche o workspace descartável.