CST 338 < ILP < CSUMB < School < Santa Cruz Abalone Works santacruzabaloneworks.com
Home - Info - Arlon - Featured - School - People - Schools
Cabrillo | Cal Poly SLO | CSUMB
CST 231 | CST 237 | CST 238 | CST 300 | CST 311 | CST 328 | CST 329 | CST 334 | CST 336 | CST 338 | CST 363 | CST 370 | CST 383 | CST 438 | CST 462s | CST 499 | General Ed | Math 130 | Math 150 | Math 151 | Math 170

CST 338 - Software Design - Units - 4

Provides students with the fundamental concepts to develop large-scale software, focusing on the object-oriented programming techniques. Coverage includes the introduction to Java programming language, object-oriented programming, software life cycle and development processes, requirements analysis, and graphical user interface development.

Prerequisite(s)/Corequisite(s): (Prereq: CST 238 with a C- or better)

Typically Offered: Fall, Spring

Units: 4

My Experience in CST-338 - Software Design in Java:

We made lots of neato stuff in this class but except for the tiny blips I put in my journals,

I don't think we had quite enough time to make the code from any of the projects particularly publishable, so there are a few of the links to the journals and how about a couple screenshots for posterity:
This is me measuring the distance between JLabel/ JButton/ JPanel/ card components to match the spec.
More measuring the distance between JLabel/ JButton/ JPanel/ card components to match the spec.
Group communication and a screenshot of the program
Screenshot of screencasting during a meeting, working on the program, colored console output, my neato timer that repaints itself is featured on the right, in the middle, the blue circle that says 'Start 0:00' it has a reflection, a shadow, paints itself, and changes color every second after started, and uses a thread to be separate from the program. Instead of extending Thread I extended JLabel and gave that a Runnable.
Screenshots of me making my CST-338 final project, I called Arlon's MVC Remote Blaster 5000 2021 Extreme - Part I
UML Diagram (Partial) of my final project, Arlon's MVC Remote Blaster 5000 2021 Extreme - Part I
Did I mention that we were making a card game? This is the making of a Java with Swing card game, the card images were provided. It was a team project, so, that, I think was most of the challenge, normally I would just bust it out but team work puts a whole 'nother dynamic and it can be tough if they want to do it wrong, but we got through it.

I figured out how to screencast from Knoppix which worked out really well - we were using Google Meet and Firefox can screencast from Knoppix 9.1, which is among my top favorite OS's, perhaps my top favorite.

The class was of course a lot of fun and I got to relearn and show off a lot of really cool stuff, and learn one important piece of syntax that
I'd actually been quite missing all along: instance.new SubClass();! I can't believe I didn't know how to do that - I actually remember at some point trying to figure that out and I guess I must have given up because that's new to me this class and I'm using it all over the place now.
I made a list of all the Java paradigms I practiced during the class:
  • instance.new SubClass();
  • anonymous objects
  • Hierarchically nested Swing GUI with mostly anonymous objects
  • more
But most importantly, my How To Concatenate Strings and Use DecimalFormat in Java From Up In A Palm Tree video I did in the very beginning of the class:
How To Concatenate Strings and Use DecimalFormat in Java From Up In A Palm Tree AKA CSUMB CST 338 Software Design - Program #1 Analysis by Arlon - https://youtu.be/DdJDn_Ts_LU
Oh here's something good I made during the class I could share, it's not directly related to class material but I added it in to help with console colors:

// You can stick this in the static contect ie where main is:

/** Alias println with a p for shortened testing lines */

public static void p( String what ){ out.println( what ); }

/** Print random color text with q()*/

public static void q( String what ){ tx.pr( what ); }

/** Print random background color text with r() */

public static void r( String what ){ bg.pr( what ); }

/** Get random background color text with s()*/

public static String s( String what ){ return bg.rr( what ); }

/** Get random color text with t() */

public static String t( String what ){ return tx.rr( what ); }

/**Colored console output*/

static class Tricks{

  class Console{

    class Colors{

      public void testTesting(){

         // q( "Line 445 " );

         // r( "Line 446 " );

         // r( "Line " + s( "446 " ) );

         // one random bg two text colors, 1st default, 2nd random..

         r( "Line " + t( "446 " ) );

         // q( "Line " + s( "446 " ) );

         // q( "Line " + t( "446 " ) );


      String color( int what ){ return "\u001b[" + what + "m"; }

      String c( int what ){ return color( what ); }

      String random( int base ){ return color( base + (int)( 8*Math.random() ) ); }

      String reset(){ return color( 0 ); }

      class BG{

         String aqua(){ return color( 46 ); }

         String random(){ return c.random( 40 ); }

         String randomWithReset( String what ){

             return c.random( 40 ) + what + c.reset(); }

         String rr( String what ){return randomWithReset(what);}

         void pr( String what ){ p( randomWithReset( what ) ); }


      class Text{

         String red(){ return color( 31 ); }

         String aqua(){ return color( 36 ); }

         String random(){ return c.random( 30 ); }

         String randomWithReset( String what ){

             return c.random( 30 )+what+c.reset(); }

         String rr( String what ){return randomWithReset( what ); }

         void pr( String what ){ p( randomWithReset( what ) ); }





static Tricks.Console.Colors c = new Tricks().new Console().new Colors();

static Tricks.Console.Colors.BG bg = c.new BG();

static Tricks.Console.Colors.Text tx = c.new Text();

// Then randomly colorful testing lines can look like:

q("Line 65 bla bla is:" /* + bla etc */ );

/** And it can be even more helpful to assign specific colors to specific outputs 

      if you're really getting confused. */

       Powered by       Santa Cruz Web Factory