Question: I have a form which have many check boxes in it. User will check one or many checkboxes and click on submit butten. So How could I get the list and count of the input box which are checked.

Please guide me friends.

Answer: 
I think it's the best route to take for OOP, since it does object orientation very well. 
I haven't seen an oop language that is as clean and consistent with regard to object orientation. therefore it's beneficial for a student to see how it should be done right.

As a language, if you contrast it with the scripting languages such as python, rebol etc. it's more heavy-weight. Best for large projects where you want to maintain quality. It focuses entirely on proper object orientation. (so you will not see all concepts of programming, but OO is a major paradigm)
Its speed is very good, as it compiles down to C, so I only meant heavy-weight about the structure.
It promotes iterative development, and thought-out design, so that's also a good technique to have.

You can read the [Eiffel Tutorial](http://archive.eiffel.com/doc/online/eiffel50/intro/language/tutorial.pdf) to get a thorough overview, but take it gently, as it's a hundred pages "tutorial".
I actually think students who are being taught OOP should learn on the easiest language possible so they struggle with the concepts more so than the language. I learned on both Java and C++. The former was OK, but the latter was a nightmare. Python would be my suggestion

With regards to Eiffel, I tried doing my PhD project in Eiffel and I ran into serious problems. I would **definitely** not recommend using the GUI as there is little to no documentation on it. Also the compiler is very buggy. I was constantly in touch with their support regarding completely bizarre behavior. For example putting a print statement would solve a compile time error! 

Eiffel provides some of the best multiple inheritance options, but even that can turn into a nightmare sometimes. I remember inheriting from multiple classes which all inherited from one main class, then having to `SELECT` one redefined function out of them, or to have to `RENAME` a function. 

The design by contract was a good addition, and the variant helped avoid infinite loops, but at other times you just looked like an idiot when you had checks like these (my Eiffel is a little rusty)

```
foo (something)
    do
        x = x + 1
    ensure
      updated: x == old x + 1

```

There are other minor problems too. Often times the Eiffel studio would get corrupted and you had to erase certain back up files to get it to work.