1. CIS 400: Object-Oriented Design, Implementation, and Testing

CIS 400: Object-Oriented Design, Implementation, and Testing

Author: Nathan Bean
Edited by: Julie Thornton

Kansas State University

© 2020-present

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

8.0.0

Last modified by: Russell Feldhausen Aug 10, 2023

CIS 400 Textbook



      • 0. Course Information
        • 1. Course Structure
        • 2. Where to Find Help
        • 3. What You'll Learn
        • 4. Course Textbooks
        • 5. Course Software
      • I. Object-Orientation
        • 0. Introduction
          • 1.Introduction
          • 2. The Growth of Computing
          • 3. The Software Crisis
          • 4. Language Evolution
          • 5. Structured Programming
          • 6. Object-Orientation
          • 7. Summary
        • 1. Classes and Objects
          • 1. Introduction
          • 2. Encapsulation
          • 3. C# Encapsulation Examples
          • 4. State and Behavior
          • 5. Classes and Objects
          • 6. Information Hiding
          • 7. C# Properties
          • 8. Programs in Memory
          • 9. Objects in Memory
          • 10. C# Object Initialization
          • 11. Message Passing
          • 12. Summary
        • 2. Polymorphism
          • 1. Introduction
          • 2. Types
          • 3. Interfaces
          • 4. Object Inheritance
          • 5. Casting
          • 6. Message Dispatching
          • 7. C# Collections
          • 8. Summary
        • 3. Documentation
          • 1. Introduction
          • 2. Documentation
          • 3. Documentation Formats
          • 4. Autodocs
          • 5. Summary
        • 4. Testing
          • 1. Introduction
          • 2. Manual Testing
          • 3. Automated Testing
          • 4. Writing Tests
          • 5. xUnit Assertions
          • 6. Mock Objects
          • 7. Running Tests
          • 8. Summary
          • 8. Test Code Coverage
          • 9. Mutation Testing
        • 5. UML
          • 1. Introduction
          • 2. UML
          • 3. Boxes
          • 4. Typed Elements
          • 5. Classes
          • 6. Associations
          • 7. Visio
          • 8. Summary
        • 6. Advanced C#
          • 1. Introduction
          • 2. Production Languages
          • 3. The static Keyword
          • 04. Operator Overloading
          • 05. Generics
          • 06. Nullables
          • 07. Anonymous Types
          • 08. Lambda Syntax
          • 08. Pattern Matching
          • 10. Summary
      • II. Desktop Development
        • 1. Windows Presentation Foundation
          • 1. Introduction
          • 2. WPF Features
          • 3. XAML
          • 4. Layouts
          • 5. Controls
          • 6. Control Properties
          • 7. Editing WPF Controls
          • 8. Component-Based Design
          • 9. Summary
        • 2. Exploring Elements
          • 1. Introduction
          • 2. The Elements Tree
          • 3. Navigating the Tree
          • 4. Styling the Tree
          • 5. Resources
          • 6. Templates
          • 7. Summary
        • 3. Event-Driven Programming
          • 1. Introduction
          • 2. Message Loops
          • 3. Event Handlers
          • 4. Declaring Events
          • 5. Events as Messages
          • 6. PropertyChanged
          • 7. Inheritance And Events
          • 8. Routed Events
          • 9. CollectionChanged
          • 10. Testing Generic Events
          • 11. Testing Custom Events
          • 12. Summary
        • 4. Data Binding
          • 1. Introduction
          • 2. Data Binding
          • 3. The Binding Class
          • 4. Binding Lists
          • 5. Binding Enumerations
          • 6. Summary
        • 5. Dependency Objects
          • 1. Introduction
          • 2. Dependency Properties
          • 3. Framework Elements
          • 4. Routed Events
          • 5. MVVM Architecture
          • 6. Summary
        • 6. Testing WPF
          • 1. Introduction
          • 2. Testing GUIs
          • 3. Testing Plans
          • 4. MVVM Architecture
          • 5. Summary
      • III. Web Development
        • 1. Core Web Technologies
          • 1. Introduction
          • 2. Core Web Technologies
          • 3. Hyper-Text Markup Language
          • 4. Cascading Style Sheets
          • 5. JavaScript
          • 6. Hyper-Text Transfer Protocol
          • 7. Summary
        • 2. ASP.NET
          • 1. Introduction
          • 2. Static Webservers
          • 3. Dynamic Pages
          • 4 . Template Rendering
          • 5. Web Frameworks
          • 6. Razor Pages
          • 7. Summary
        • 3. Form Data
          • 1. Introduction
          • 2. HTTP Forms
          • 3. Form Data
          • 4. Razor Pages and Form Data
          • 5. Validation
          • 6. Summary
        • 4. Web APIs
          • 1. Introduction
          • 2. Making Requests
          • 3. Working With Disposables
          • 4. Parsing API Data
          • 5. Asynchronous Requests
          • 6. RESTful Routes
          • 7. Summary
        • 5. LINQ
          • 1. Introduction
          • 2. Databases
          • 3. LINQ
          • 4. LINQ Syntax
          • 5. Extension Methods
          • 6. Summary
        • 6. Deployment
          • 1. Introduction
          • 2. Web Addresses
          • 3. Secure HTTP
          • 4. Web Hosting
          • 5. Virtual Machines
          • 6. Summary
      • A. Learning Programming
        • 1. Introduction
        • 2. Natural Born Programmers
        • 3. Mindsets
        • 4. The New Science of Learning
        • 5. Jean Piaget
        • 6. Developmental Epistemology of Computer Programming
        • 7. Summary
      • B. Git and GitHub
        • 1. Introduction
        • 2. Version Control Software
        • 3. Git
        • 4. Git Initialization
        • 5. Staging and Committing
        • 6. Ignoring Files
        • 7. Reverting Changes
        • 8. Branches
        • 9. Remote Repositories
        • 10. Feature Branches
        • 11. Merge Conflicts
        • 12. Create a Release
        • 13. Adding Documentation Files
      • C. Exercises
        • 1. Encapsulation
        • 2. Documentation Exercise
        • 3. Testing Exercise
        • 4. Polymorphism Exercise
        • 5. WPF Exercise
        • 6. Elements Tree Exercise
        • 7. Events Exercise
        • 8. Data Binding Exercise
        • 9. Dependency Property Exercise
        • 10. Razor Pages Exercise
        • 11. Responsive Design
          • 1. Media @ Rule
          • 2. Media Queries
          • 4. Float-based Responsive Layout
          • 4. Responsive Setup
          • 5. Flex-based Responsive Layout
          • 7. Grid-based
          • 8. Summary
        • 12. Web Data
          • a. Adding Search to the Movie Site
          • b. Adding Categorical Filters to the Movie Site
          • b. Adding Categorical Filters to the Movie Site
          • b. Adding Categorical Filters to the Movie Site
          • b. Adding Categorical Filters to the Movie Site
          • b. Adding Categorical Filters to the Movie Site
          • b. Adding Categorical Filters to the Movie Site
          • c. Numerical Filters
          • d. Numerical Filters
          • d. Numerical Filters
          • d. Numerical Filters
          • d. Numerical Filters
          • d. Numerical Filters
          • e. Using LINQ
        • 13. Deployment
          • a. Creating an Azure Account
          • b. Deploying our Movie Site to Azure

        •  

        Built using Hugo and Hugo Relearn Theme.

        Creative Commons License
        This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.