SCWCD concentrates on the fundamentals of web-development. Servlets, JSPs, Filters etc..
But in real world, these alone won't be enough. And you'd most certainly be using a web-framework. So my recommendation would be to try out a project using a web-framework.
Spring-MVC is a popular choice on that. If you were looking for ideas on what a project could be on, some sort of e-commerce application would be a good start. Like a mini amazon.com
Runtime polymorphism applies only to methods. Or in other words 'Dynamic method dispatch' is supported. (Finding the type of object at runtime and invoking the corresponding method)
In the case of variables, its always the 'reference type'. There's no such thing as 'Runtime Variable Dispatch'.. Everything is resolved at compile-time when it comes to variables
Now to shadowing:
What happens, if you have a variable by the same name in the superclass and the subclass and what if they were initialized with different values ?
Well, its all about the reference type with which the variable is accessed. If accessed with a reference of the superclass, you get the value you initialized with in the superclass
If accessed with a reference of the subclass, you get the value you intialized with in the subclass. The actual type of the object doesn't matter (Whichever subclass object be assigned to the reference). Only the reference type matters.
As to the word 'shadow'ing
To say that gearRatio is shadowed in SportsCar, it means that the superclass's value is bypassed and the new value defined in the SportsCar is used. The word 'overriding' is avoided here as 'overriding' is a term that is tightly used along with 'runtime polymorphism'. And that isn't the case here
Green UML is neat eclipse plugin. One other choice would be Architexa Apart from reverse engineering to get class or sequence diagrams, also consider writing unit / functional tests. It helps to understand a project faster
Sorry, I don't understand your question clearly. Typically you'd iterate through the recordset, create one DTO object corresponding to one row retrieved, and add that DTO to the ArrayList.
So If you have 100 rows retrieved by a query, then you'd have an ArrayList that contains 100 DTOs.
It would be better to change the code to not use an "array of ArrayList". An array of ArrayList ( or any collection within another collection ) makes the code difficult to read and maintain. Instead an ArrayList of POJOs would be more readable and maintainable.