• Post Reply Bookmark Topic Watch Topic
  • New Topic

Passed SCJD - URLyBird 1.3.1 362/400  RSS feed

Posts: 3648
Firefox Browser Java Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello all, I passed SCJD (URLyBird 1.3.1) today (362/400). The distribution is as follow:
General Consideration: 99/100
Documentation: 70/70
OO Design: 30/30
GUI: 39/40
Locking: 44/80
Data class: 40/40
Network Server: 40/40
Total: 362/400

Overall I could have done better in locking section. This is because I used my customized class to keep track of locked records instead of using standard Java API. Anyway for me. Below are my pointers:

Generation Considerations
* use Sun coding standards
* think like a junior programmer in areas of design and coding logic
Don't know why that single point got deducted?

* user guide = HTML format, screen shots for everything (errors, app windows etc), provide quick start guide
* javadoc = provide javadoc comments for private members/classes, generate javadoc comments for protected/public members/classes
* choices.txt = describe requirements, assumptions, use cases, architecture, networking, participants, each layer of the app

OO Design
* uses 3-tier architecture: GUI, service layer, data layer
* separate each class accordingly to responsibilities as much as possible
* package source code/classes accordingly to as if it is 3-tier app (I have 4 packages: client, data, server, helper)
* no anonymous inner classes
* inner classes are all private
* group helper classes into its own package

* use Swing Action rather than ActionListener interface
* have menu bar, JTable, button panel, status bar
* buttons in the button panel and the menu items in the menu bar are controlled by list selection model and some "actions" are disabled by default until a table row is selected
* use table cell rederers to position/align numbers and dates
* no column sorting for table
* provide refresh view button/action to get latest data's image
* provide create, delete, check out functions in the GUI
* status bar display message as user operates the app (eg when such and such window opens)
* status bar display number of connected users (for network mode only) - use Swing Timer to update, act as server keep-alive
* provide tool tips for table columns and rows
* use my own table model (inherits AbstractTableModel)
* position window in the middle of the user computer's screen (using ToolKit)
* didn't use GrigBagLayout, only BorderLayout, FlowLayout and at times GridLayout

Locking / Data Class
* have my own interface extending Sun provided interface
* Data class implements my own interface (extended one)
* use my own class to manage locked records (didn't use standard Java API)
* act as service layer (interface LocalService) in stand-alone mode - delegate to Data class
* Data class is singleton

Network Server
* use RMI
* didn't use rmic to explicitly generate stubs
* act as service layer (interface RemoteService) in networked mode - delegate to Data class
* display connection and disconnection messages
* provide server connection checking when clients connect (if server IP/port are correct)
* provide server shutdown using shutdown hook

Thanks to all the people who helped me during the assignment.
Ranch Hand
Posts: 3417
author and cow tipper
Saloon Keeper
Posts: 4968
Hibernate Spring Tomcat Server
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Conratulations! And thanks for the great feedback.

-Cameron McKenzie
Ranch Hand
Posts: 1936
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ranch Hand
Posts: 1880
Firefox Browser Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!