GithubHelp home page GithubHelp logo

michalkijas / java-kata-1 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from echocat/java-kata-1

0.0 0.0 0.0 63 KB

Coding kata for Java aimed to improve your development skills in continues sessions.

License: MIT License

Java 83.91% Groovy 16.09%

java-kata-1's Introduction

Java Kata - Part 1: Library

Code kata in Java where you have to write a library of books and magazines.

A code kata is an exercise in programming which helps a programmer hone their skills through practice and repetition.

Topic

You have to implement an abstracted and simple library system.

Frame conditions

  1. You have exact 2.5 hours of time - no minute longer.

    If you reach this time limit stop your work immediately. It is one part of the kata to respect this time limit.

  2. There are no restrictions on how to use the provided time. If you want to code the entire time, take a break or a cigaret - it’s up to you.

  3. This is a real world situation. You are allowed to consult the Internet, use every library you want, call a friend ...

    BUT: You are not allowed to do pair programming. AND If you have already done this kata before to have a look at your previous implementation.

  4. Develop your code based at least on Java language level 8.

  5. Keep the following priorities in mind while you implementing - in the mentioned order:

    1. Code quality
    2. Usage of object oriented methods
    3. Functionality
  6. Given resources:

    Hint: There is a reason why there are so many books and authors in german with umlauts.

    • authors.csv: Contains authors with its email, firstName and lastName.
    • books.csv: Contains books with its title, description, one or more authors and an isbn.
    • magazines.csv: Contains magazines with its title, one or more authors, a publishedAt and an isbn.

Tasks

Main tasks

  1. Your software should read all data from the given CSV files in a meaningful structure.

  2. Print out all books and magazines (could be a GUI, console, …) with all their details (with a meaningful output format).

    Hint: Do not call printBooks(...) first and then printMagazines(...) ;-)

  3. Find a book or magazine by its isbn.

  4. Find all books and magazines by their authors’ email.

  5. Print out all books and magazines with all their details sorted by title. This sort should be done for books and magazines together.

Optional tasks

Hint: Optional means optional.

  1. Write Unit tests for one or more methods.

  2. Implement an interactive user interface for one or more of the main tasks mentioned above. This could be done by a website, on the console, etc.

  3. Add a book and a magazine to the data structure of your software and export it to a new CSV files.

Procedure

  1. Get the code. There are several ways for it:

    1. With fork (makes it possible to preserve your work):

      1. Fork this repository
      2. Clone this fork to your computer:
        git clone <your github url>
        # Example: git clone https://github.com/blaubaer/java-kata-1.git
    2. Clone this repository with local branch:

      git clone https://github.com/echocat/java-kata-1.git
      git checkout -b run-<yourname>-<iteration number> 
      # Example: git checkout -b run-blaubaer-1
    3. Just download it from here

  2. Open in your favorite IDE.

    Hint: We recommend IntelliJ IDEA Community Edition.

  3. Start the kata.

  4. Discuss with your friends and/or colleges your solution.

  5. Repeat after some days/weeks.

FAQ

How to run your application?
  1. By IDE:
    Just click with right mouse on the MainApp class and then on Run or Debug.
  2. By command line:
    ./mvnw package exec:java -Dexec.mainClass=org.echocat.kata.java.part1.MainApp
How to run your tests?
  1. By IDE:
    Just click with right mouse on the root of your project tree and click on then on Run all tests or Debug all tests.
  2. By command line:
    ./mvnw test

License

See LICENSE file.

java-kata-1's People

Contributors

blaubaer avatar michalkijas avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.