首页
编程语言
数据库
网络开发
Algorithm算法
移动开发
系统相关
金融统计
人工智能
其他
首页
>
> 详细
Cpt S 321讲解 、c/c++编程设计辅导
Cpt S 321 – Final Exam
Spring 2024
30 points total
Total pages: 6
First name:
Last name:
WSU ID:
Read the instructions carefully until the end before asking questions:
- This is an individual exam: you are not allowed to communicate with anyone regarding the exam questions.
- If something is unclear, ask for clarifications via the Canvas Discussion (no code allowed). If it is still unclear after my answer, then write down any assumptions that you are making.
- At the end, make sure you download your exam code in a clean directory to ensure that it works.
- No late submissions are allowed.
- What to submit (failure to follow the submission instructions below will result in receiving 0 automatically for the exam):
1.In your in-class exercises GitLab repository create a new branch called “FinalExam” and commit the following:
- i) a .PDF version of your class diagram. The design document must be placed in a folder “Design_Documents” at the root of your project and the name must contain your name and a description of the diagram (ex.: “Venera_Arnaoudova-final-ClassDiagram.pdf”).
- ii) your code.
Tag what you want to be graded with “FinalExam_DONE” tag.
2.Your GitLab readme file must:
oexplain what features you implemented for the exam and the ones that you are missing.
oprovide a link to a video capturing your screen where 1) you show us how you download your code from the GitLab repository in a clean directory, and 2) you execute your application from that clean download and you show us the different features that you implemented.
3.Answer questions 1, 2.1, 2.2, and 2.3 in this document and submit it via Canvas as a .PDF file. Name it in the following format: “FirstName_LastName-final-answers.pdf”
Q1. (5 points) Consider the GRASP, SOLID, and Design Patterns (DP) that we have learned in class. Select 2 patterns that belong to different categories (ex. one DP and 1 SOLID principle) and illustrate how the two different patterns can work towards the same high-level goal. Also discuss the similarities and differences of how the two patterns achieve that goal.
Pattern 1: Category:
Pattern 2: Category:
High-level goal of the two patterns:
Q2. (25 points)
You are contacted by a small educational company to build an application in C# with a GUI that will help parents teach young children to eat healthy by helping them understand what a balanced diet means. (You will focus mainly on the domain logic so do not worry about all the GUI controls that need to be put in place for this prototype.)
The idea is the following: Children can plan their 3 daily meals by choosing food from different categories. Categories can be:
Fruits (apples, raspberries, watermelon, etc.); they provide vitamins, dietary fibers, etc.,
Vegetables (cucumbers, carrots, etc.); provide vitamins, dietary fibers etc.),
Protein (eggs, fish, lentils, etc.); great for our muscles but need to track the fat,
Grains (oatmeal, whole wheat bread, brown rice, etc.); great source of dietary fibers, and
Dairy (milk, cheese, yogurt, etc.; provide Calcium).
Some food items can be part of different categories. For example, lentils are both proteins and vegetables.
Being this a teamwork between parents and children, some of the features will be designed for parents, other children but the prototype does not need to create different user profiles to distinguish between the two. For now, all features will appear in the same application.
Here is a summary of the features, that you need to design and implement for the prototype:
Features for parents:
1.Create a daily goal for food categories: The goal depends on many factors including child age and physical activity. Assume that parents will use existing guides such as the one designed by USDA. As an example, for a 5-year-old child the daily goal is 1 cup of fruits, 1.5 cups of vegetables, 3 ounces of proteins, 4 ounces of grains, and 2.5 cups of dairy.
2.Create a food item: Parents should be able to create food items that they can buy so that children can use them in the meal planning. This feature allows parents to create a food item (ex. apple) and specify the quantity (ex. 1 count) and associated serving size for categories that is fulfils (ex., 100% of the fruit category).
3.Change an existing food item: Parents should be able to select an existing food item and change its characteristics. For example, change the quantity of apples to be 0.5 (half an apple) instead of 1 (full apple).
4.Delete an existing food item: Parents should be able to select an existing food item and delete it.
Features for children:
5.Create a plate: Children should be able to start planning a meal for a specific date and type of meal (breakfast, lunch, dinner, for now; snacks to come later). By default, the meal planner will show the different categories of food that children want to have and the levels of completion of the categories based on the state of the current meal – all of which are 0% completed at this stage.
6.Add a food item to a plate: Children can select a type of food item (ex., apple) and the associated number of servings from it (ex., 1 time the quantity of an apple) and add it to a specific plate (i.e., meal plan).
7.Remove a food item from a plate: Children should be able to select an existing meal plan and a specific food item and remove the food item from the meal plan.
The application will contain multiple parts in the GUI view as follows:
8.Showing the current state of the application where children can see all the meals that they have planned or are in the process of planning together with the status of the meals based on:
a.Individual meal goals: we want to see the fulfilled percentages in each food category.
b.The daily goals (such as the one listed in feature 1): we want to see cumulative percentages, per category type, for all meals planned in a specific day.
9.Creating food items that contains all the necessary controls to allow parents to perform all the features listed above.
10.Create meal plans that contains all the necessary controls to allow children to perform all the features listed above.
Q.2. Part 1. Design.
To show your design and choices you are making, you can use the table below. If you choose the fill out the table below, indicate the principles, patterns, and good practices that we learned about in class that you plan to use for your design. Add more rows if needed.
If you choose not to fill out the table, you can communicate your choices on your class diagram.
Principle/Pattern name (type)
Ex.: “Polymorphism (GRASP)” Classes that are involved
Ex.: “Animal, Cat, Dog” Additional comment
Ex.: Cat and Dog inherit from Animal
Draw the class diagram for your design to show how different classes are connected. Also highlight any additional design choices that you have made that were not discussed in the table by annotating your diagram with comments. Use draw.io to make the class diagram, export it as a .PDF file (or a .PNG), and include it in your submission. Name the file in the following format: “FirstName_LastName-diagram.pdf”. Provide a direct link to your class diagram here:
Q.2 Part 2. Implementation.
Implement a prototype application using C# and a GUI of your choice (WinForms or Avalonia) and best coding practices; provide a link to your GitLab tag (make sure me and the TAs are maintainers) here:
Grading schema and point breakdown for Q2 (25 points total):
●9 points: The design is easy to maintain and extend and make use of good design principles and practices. Both questions Q2.1 and Q2.2 will be used to evaluate the design. A design document showing a class diagram that represents your design should be present in your repository. Feel free to add other types of diagrams if need be. Feel free to use any software (such as draw.io) to make the class diagram – don’t forget to export it as a .PDF to include in your submission.
●11 points: Your software fulfills all the requirements above with no inaccuracies in the output and no crashes. (1 point for each of the 9 features: 1-7, 8.a, 8.b, 9, and 10.)
●1 point: For a “healthy” version control history, i.e., 1) the prototype should be built iteratively, 2) every commit should be a cohesive functionality, and 3) the commit message should concisely describe what is being committed.
●1 point: Code is clean, efficient and well organized. This includes identifying opportunities for refactoring your code and applying those refactorings. Make sure that the refactoring commits clearly describe the type of refactoring that is applied.
●1 point: Quality of identifiers.
●1 point: Existence and quality of comments.
●1 point: Existence and quality of test cases. (Thinks about the different types of tests!)
General Homework Requirements
Quality of Version Control ●Should be built iteratively (i.e., one feature at a time, not in one huge commit).
●Each commit should have cohesive functionality.
●Commit messages should concisely describe what is being committed.
●Use of a .gitignore.
●Commenting is done alongside with the code (i.e, there is commenting added in each commit, not done all at once at the end).
Quality of Code ●Each file should only contain one public class.
●Correct use of access modifiers.
●Classes are cohesive.
●Namespaces make sense.
●Code is easy to follow.
●StyleCop is installed and configured correctly for all projects in the solution and all warnings are resolved. If any warnings are suppressed, a good reason must be provided.
●Use of appropriate design patterns and software principles seen in class.
Quality of Identifiers ●No underscores in names of classes, attributes, and properties.
●No numbers in names of classes or tests.
●Identifiers should be descriptive.
●Project names should make sense.
●Class names and method names use PascalCasing.
●Method arguments and local variables use camelCasing.
●No Linguistic Antipatterns or Lexicon Bad Smells.
Existence and Quality of Comments ●Every method, attribute, type, and test case has a comment block with a minimum of
,
,
, and
filled in as applicable.
●All comment blocks use the format that is generated when typing “///” on the line above each entity.
●There is useful inline commenting in addition to comment blocks that explains how the algorithm is implemented.
Existence and Quality of Tests ●Normal, boundary, and overflow/error cases should be tested for each feature.
●Test cases should be modularized (i.e, you should have a separate test case for each feature or scenario that you test - do not combine them into one large test case).
联系我们
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-21:00
微信:codinghelp
热点文章
更多
讲解 econ1202 – quantitativ...
2024-11-22
辅导 msds 490: healthcare an...
2024-11-22
讲解 civl 326 geotechnical d...
2024-11-22
辅导 term paper medicine whe...
2024-11-22
讲解 eng3004 course work辅导...
2024-11-22
讲解 ee512: stochastic proce...
2024-11-22
辅导 geog100 ol01 - fall 202...
2024-11-22
辅导 st5226: spatial statist...
2024-11-22
讲解 ece 101a engineering el...
2024-11-22
讲解 database development an...
2024-11-22
讲解 comp3134 business intel...
2024-11-22
讲解 practice exam 2, math 3...
2024-11-22
讲解 project 4: advanced opt...
2024-11-22
辅导 38003 organisational be...
2024-11-22
辅导 economic growth调试spss
2024-11-22
辅导 ee512: stochastic proce...
2024-11-22
讲解 eesb04 "principles of h...
2024-11-22
辅导 am2060 final assignment...
2024-11-22
辅导 acfim0035 fundamentals ...
2024-11-22
辅导 stat 612 (fall 2024) ho...
2024-11-22
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 99515681 微信:codinghelp
© 2024
www.7daixie.com
站长地图
程序辅导网!