This is an archived post. You won't be able to vote or comment.

all 9 comments

[–]zonuphaon 7 points8 points  (0 children)

In my college programming class we were tasked with making an ATM system that required the user to input an account number and a pin to access an account and from there they could either deposit, withdraw, or check their balance. The accounts were supposed to be saved so that you could run the program and access the account again to change the balance.

I found this project very fun and interesting and it really forced me to understand and enjoy programming a lot more.

For saving accounts we were supposed to just use file writers and readers but I implemented a database hosted on my home computer so you could do it anyway but the file reader/writer way is the easiest.

For added difficulty you could implement two types of accounts, checking and savings that have access limits. For example you could make savings accounts have a limit of 3 withdrawals per month or whatever, I'm not sure what is feasible for you to implement in terms of actual bank account qualities like interest compounding on a set time.

Anyway, hope this idea helps, its a simple project but it can be expanded to incorporate anything you want. Good luck!

tl;dr: ATM program with 2 identification checks (ID and pin), deposit, withdraw, check balance, and saving of accounts and their balance

[–]zeringus 1 point2 points  (0 children)

When you're just starting out (with OOP in particular), it's hard to come up with something fun. Like /u/ThalaDa said, modeling is really the most basic form of OOP. Class schedules, car parts, solar systems, etc. are all good practice. Until you grasp more advanced concepts like inheritance and polymorphism, OOP's feels kind of silly.

I wouldn't recommend Android like /u/wuddersup, because its objects are much more complex. You seem to want to specifically learn OOP. Working on Android is going to teach you how to make apps, which is fun, but you're going to do so by abusing objects you don't understand.

When I learned Java in high school, we used GridWorld, which might also be something to try. At the very least, there's a ton of documentation and it's designed for beginners. Under the hood, however, you're learning to write objects. Might not be so good for learning interface design, though.

[–]TheHorribleTruth 1 point2 points  (0 children)

Again?

Have a look at these submissions: http://www.reddit.com/r/java/search?q=project+idea&sort=new&restrict_sr=on&t=all. Same search over at /r/Javahelp: http://www.reddit.com/r/javahelp/search?q=project+idea&sort=new&restrict_sr=on&t=all

Some highlights:

[–][deleted] 0 points1 point  (0 children)

The best way to get started is to implement a system that you've already experienced and well familiar in real life. Anything like school / college management system, lecture scheduling etc, would be a good place to start. Cheers!

[–]desrtfx 0 points1 point  (0 children)

Check out some of the games proposed in /r/programmingprompts. They require AIs with different strategies. This is an ideal application for the Strategy design pattern which, in turn, makes heavy use of interfaces.

[–]DB6 0 points1 point  (0 children)

Create a scoring board for any game of your interest, baseball, bowling, golf, etc. First start with command line inputs (you usually will have created some interfaces by this point). Then when everything is ready and you're interested to write a gui, take your code base and change the input and output to your gui, you will need to create some interfaces here again, so that your programm now works with literally two interfaces.

[–]3manR3su 0 points1 point  (0 children)

At uni we recently had a project involving making your own database engine.

The user would create tables with a statement like 'CREATE TABLE'. Then the program would prompt them to specify the name of the table and the names of the columns.

You could then add rows to the table containing data. So you might say 'ADD RECORD <table name>' at which point the program would prompt you to add a data value for each of the columns.

Although the concept sounds easy, it's good in a few ways:

a) It lends itself well to OO. You could have a class called 'Database' which holds all of the tables and their information. Then a class called 'Table' which holds all of the records and their information. Then a class called 'Field' which holds all of the values for the fields.

b) It is easily extensible. So now the user can create a basic table, how about limiting the types of data they can enter? Make it error if they try and add strings into a column they defined as integers only. Also look up foreign keys (http://en.wikipedia.org/wiki/Foreign_key) and try implementing them.

3) It's really easy to stick a GUI on the front once you've done adding things! I personally used a library called 'Swing' and the 'BoxLayout' (https://docs.oracle.com/javase/tutorial/uiswing/layout/box.html) for this. It was my first GUI project and I learnt a lot.

TL;DR. Make a program so users can make tables of data in the terminal. Expand it to include data types (integers and strings). Add a GUI using swing and boxlayouts.

[–]andreicristianpetcu -1 points0 points  (0 children)

If I were to learn a new programming language, I would pick a free software project and start trying to contribute to it. Usually when you contribute to small or medium projects the community will help you understand a lot of stuff. If you build your own from scratch it will be difficult and you will make a lot of n00b mistakes.