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.

    6.0.0

    Last modified by: Russell Feldhausen Aug 10, 2023

    K-State 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.