Skip to content

leoreinmann/Advanced-Object-Oriented-Design-and-Programming-Portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Advanced Object-Oriented Design and Programming Portfolio

Course Overview

This repository showcases my projects from the Advanced Object-Oriented Design and Programming course (CS635, Fall 2023) at SDSU. This course emphasized advanced object-oriented programming concepts, design patterns, software quality, and effective coding techniques.

Projects

Project 1: Trie Implementation Using Linked Structure

  • Description: Implemented a trie data structure for efficient word storage and manipulation.
  • Key Features:
    • Linked structure for data storage.
    • Add and find word functionality.
    • Special method to find words containing "ar".
    • Print all stored words.
  • Skills Developed: Java programming, data structure implementation, object-oriented design.

Project 2: Binary Search Tree with Strategy and Visitor Pattern

  • Description: Created a binary search tree (BST) for managing Student objects with custom sorting.
  • Key Features:
    • BST storing Student objects with attributes like name, ID, and GPA.
    • Internal iterator with lambda functions.
    • Strategy pattern for sorting: by ID, by name, and by GPA.
    • Null Object pattern for eliminating checks for null references or pointers in the tree
    • Visitor pattern for counting null nodes and the computing the longest path
  • Skills Developed: Strategy pattern, lambda expressions, advanced data structures, Java programming.

Project 3: Mini Turtle Language Interpreter

  • Description: Developed an interpreter for a mini turtle language inspired by Etoys and Scratch.
  • Key Features:
    • Turtle class simulating movement on a 2D plane.
    • Mini language with commands for movement, turning, looping, and variable management.
    • Interpreter design pattern for executing turtle programs.
  • Skills Developed: Interpreter pattern, language design, Java programming, abstract syntax tree representation.

Key Concepts

  • Design Patterns: Singleton, Factory Method, Observer, Strategy, etc.
  • Refactoring: Code improvement techniques.
  • Coupling and Cohesion: Impact on software quality.
  • Unit Testing: Ensuring code reliability.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages