강의

멘토링

커뮤니티

Programming

/

Back-end

[Java Practical Project for Beginners] Object-Oriented Thinking Training - 3 Mini-Project Practices

From small projects to practicing structure building! A hands-on, mini-project-based introductory course for those who lack experience in Java object-oriented design and practice. From the basics to structural thinking, improve your skills by implementing a Java application from start to finish.

(5.0) 5 reviews

55 learners

  • Kevin
실습 중심
백엔드
Java
IntelliJ IDEA
dip-principle
validations
domains

Reviews from Early Learners

What you will gain after the course

  • Confidence in Java programming

  • The joy of being bored with Java

  • Where to start to properly begin as a Java backend developer

  • How to use Java's Stream API

  • How and where to start implementing an application

  • The Necessity of Unit Test Code

  • How to start and write unit test code.

  • Practicing writing a requirements document and analyzing requirements.

  • The importance of validation and how to conduct it

  • The importance of domain rules and practicing expressing them in code.

  • Practicing writing unit test code for domain rules

  • How to Implement Validation Using Java Exceptions

  • Practicing using Custom Exceptions

  • The concept and application of Layered Architecture.

  • How to Utilize Generics

  • The concept of DIP, why DIP is needed, and application examples.

  • How to utilize the Google Tasks API

I recommend this for people like this

You've learned Java syntax, but don't know where to start or how to actually implement things

Those who lack hands-on experience with Java projects

Those who have learned Spring but struggled with projects due to weak Java fundamentals

📌 Before vs After Taking the Course - Here's How You'll Change!

🔸 "It was difficult to translate requirements into code"

→ You will be able to divide functions and design classes directly.

🔸 "Object-oriented design feels overwhelming"

→ Enables writing code structured with OOP thinking

🔸 "I lacked hands-on project experience"

→ Improve your practical skills by completing 3 mini projects

🔸 "I was just learning with my eyes only"

→ Analysis → Design → Implementation → Testing You will directly perform the entire process

💡 A very special lecture for those who are struggling with application implementation



A common story I heard from students while teaching nearly 1,000 students in boot camps

"I understand the concept, but I can't implement it"

"I understand Java syntax now, but when asked to build something with Java, I don't know where to start"

"I finished Java and moved on to Spring, but I can't get my hands on the practice exercises"

"I typed out all the code from the learning materials from start to finish, but I'm so scared of the project"


At that time, the story I told my students was as follows.

"Don't try to learn with just your eyes, learn with your fingers and your mind"

"When typing code, think for yourself as you type"

"Build your foundation first. Then practice over and over again for application."


By thinking for yourself in this way, building the fundamentals of language and technology, and practicing repeatedly for application, you'll find yourself surrounded by the excitement of "What should I create next?"


What's the best way to feel this kind of excitement?

Even for very small applications, it's about thinking and contemplating on your own while building everything from start to finish by yourself.


If you don't know what to build or how to build it, take this course.

I will help you feel not only your application implementation skills but also exciting anticipation rather than fear about your projects.

In Mini Project Java Part 1, we create a console application using Java and some external libraries, along with the Google Tasks API.


"Why would we create console-based applications when they're useless anyway?" you might think. ^^;

Of course, I also fully empathize with this statement, though not 100 percent.

However, while console-based applications may be somewhat inconvenient, I think they play a very important role in building a solid foundation in Java fundamentals.


"Surely we're not just going to build console-based applications and call it a day, right?" If that's what you're thinking?

No, that's not right. In the Java Mini Project Part 3, we also implement the UI (JavaFX). ^^;


"Isn't JavaFX a technology that's not really used in practice? But why are we learning it??" If you're thinking this?

⭐ To survive well in the field as a good Java developer for a long time, it's important to implement UI and understand both perspectives of client and server backend without distinction.

If you can understand the client-side perspective, wouldn't you be able to create better server-side applications? ^^;

You'll find it fun once you give it a try. ^^

Course Structure

  • We will carry out a total of 3 mini projects:

    1. Stream API Multiplication Table Application

    2. Todo List Management App (1): Requirements-Based Design, Implementation and Testing

    3. Todo List Management App (2): Google Tasks API Integration

  • Each project is based on requirement documents
    where students first attempt design → implementation → testing on their own,
    then compare with Kevin's implementation version to learn better structure and thinking approaches.

📶 Implementation Skills Power-Up Stage Guide

✅ 100% Power Up

  • I implement all the features myself first, then compare with the lecture.

    • You'll naturally think "I have no idea how to do this, how can I not look it up?" but whether you search the internet or ask Chat GPT, anyway try to implement all the features yourself.

  • You can feel the greatest growth and sense of accomplishment.


✅ 80% Power Up

  • Implement as much as you can on your own to the best of your ability,

    When you get stuck, refer to the lecture content and try applying it.

50% Power Up

  • I watch the lectures first and learn by following along with the code.


  • Then, in the next empty project, try coding it yourself again.

0% Power Up

  • I just watch the lectures with my eyes.

  • This means you shouldn't do it this way. ^^;

    • Even the smallest project requires a repeated and accumulated process of thinking for yourself while typing code.

    • Only then can the knowledge that you make your own gradually accumulate through that process.

What you'll gain from this course

  • Intuition for Java Object-Oriented Code

  • Design → Implementation → Testing complete workflow experience

  • Build coding confidence through small and diverse project practice

  • Before learning Spring, a solid foundation to strengthen your Java skills


  • Java is becoming fun

After this course, you will be able to practice implementing various types of applications through the following sequel series.

  • Java Part 1(Open)

  • Java Part 2(Open)

  • Java Part 3(Opening Soon)

  • Spring MVC Edition(Planned)

  • Testing Edition (Planned)

  • Spring Rest Docs Edition (Planned)

  • Spring Security Edition (Planned)

  • Spring WebFlux Edition (Planned)


- Clean Code - Let me briefly quote the author's words. ^^

Just as a bicycle becomes an extension of your body once you get used to riding it, I hope that through this course, implementing applications will become a comfortable part of your daily routine.

You'll learn this kind of content

💡This is the section order excluding the Introduction section, so please note this to avoid any confusion.

Section 1: Creating a Multiplication Table Application Using Stream API

In Section 1, we'll create a very simple application that can get your brain and fingers warmed up.

"What? Isn't a multiplication table program too simple?" you might think. A multiplication table program is one of the fundamental problems that regularly appears when solving algorithm problems.


However, you need to think from the perspective of creating a single well-functioning application, and since you need to implement it using Java's Stream API, the multiplication table program can approach you in a refreshingly different way. ^^


✅ Project Goals

  1. You can understand the concepts of lambda expressions and functional interfaces in Java.

  2. Understand the characteristics and basic usage of Stream API.

  3. You can understand the importance of code readability.

  4. You can separate method logic by functionality through method extraction (Extract).

  5. You can understand the concept of separation of concerns using classes.


Section 2: Creating a Todo List Management Application (1)

In Section 2, we'll create an application for managing to-do tasks.

Task management applications are well known by the name TodoList, and it's one of the most commonly used topics when getting started with web programming.


You might think of it as a simple feature that registers tasks and marks registered tasks as complete, but I believe there are quite a few people who would hesitate when asked to actually implement this simple feature themselves.

Moreover, if you consider the application's code quality, code readability, and even unit test cases, it's not something you can take lightly. ^^;

In the course, you won't just learn to create applications that simply run, but you'll be able to learn quite important things as follows.


✅ What you'll learn in Section 2

  1. You can understand how to express the rough requirements of an application to be developed in the form of classes and methods and what advantages this approach offers.

  2. You can understand how to first express your thought process in code to implement a specific feature, and then concretely implement that feature.

  3. You can understand how to complete unit test code step by step.

  4. You can understand how to separate domain logic with applied domain rules from service code and why this separation is beneficial.

  5. You can understand the basics of the D.I.P (Dependency Inversion Principle) design principle used in domain-driven development.


✅ Project Goals

  • You can understand how to build the basic structure of an application using the framework of classes and methods.

  • You can implement simple task registration logic using task data.

  • Understand Layered Architecture.

  • Java's Map can be used like an in-memory data store.

  • Understand the differences between Anemic Domain Model and Rich Domain Model.

  • Understand the basic concepts of the D.I.P (Dependency Inversion Principle) design principle and the reasons for applying this principle.


Section 3: Creating a Todo List Management Application (2)

In Section 3, we will upgrade the to-do management application created in Section 2 to enable sustainable management of to-do data using Google Tasks API technology.


Of course, we could create a to-do management application using the Google Tasks API from the beginning, but I thought this wouldn't be desirable because it would require cramming too much knowledge into our heads while implementing the application.


Anyway, if you've built the task management application well in Section 2, you can focus on learning the following content in Section 3.


✅ What you'll learn in Section 2

  1. You can understand the common procedures for using services provided by Google (Google Tasks, Google Drive, Google Calendar, etc.).

  2. Authentication process for using services provided by Google can be understood from a big picture perspective.

  3. You can understand the reasons and advantages of writing test cases for the purpose of learning specific technologies.

  4. You can understand the reasons why preprocessing and postprocessing are necessary in the testing process and apply them to test cases.

  5. D.I.P (Dependency Inversion Principle) design principle is applied to enable flexible changes to data access technologies in the data layer.

  6. You can apply a Converter for exchanging data between objects of different types.

  7. Using Object Factory + Singleton pattern, you can understand how to manage objects used in an application from a single location.


✅ Project Goals

  • Understand the concept of learning tests for understanding specific technologies.

  • Understand the concept of external API services.

  • Using the Google Tasks API service, you can manage your to-do items.

  • By applying DIP (Dependency Inversion Principle), you can flexibly apply data layer technologies.

  • Understand the concept of Factory and create objects using Factory.

  • Understand the concepts of date and time specified in RFC-3339 and be able to use them in applications using Java API.


Do you have any questions?

Q. To take the Java Part 1 course, do I just need to know Java? What level of Java proficiency should I have?

In the Java Part 1 course, you'll implement a total of three mini projects. Two of these projects are built using pure Java only, while the remaining project additionally uses Google Tasks API technology to implement the application.

Since many of you may not have experience using the Google Tasks API, the course includes a certain portion of content covering how to use the Google Tasks API.


In conclusion, if you have a certain level of basic Java knowledge (variables, data types, standard input/output, concepts of classes and interfaces, etc.), you can take this course.


However, the course includes content that students may encounter for the first time (testing techniques, object-oriented design techniques, etc.) throughout the lectures, but I think these topics can be learned as you progress through the course.

Q. Why should I take this course?

As I briefly mentioned earlier, the most overwhelming part when learning programming languages at bootcamps or computer academies is not knowing how to create something visible using the programming language I've learned.

Although it's a small mini application, by having students think and contemplate on their own while directly implementing the application, the core goals of this lecture series are to help them gain confidence that "I can also create something on my own" and to "help them realize the direction they should take as developers going forward".

Therefore, I believe it can provide decent help to those who are struggling with application implementation.

Q. It seems like Java developers must know the Spring Framework to become developers, but is it really okay not to know Spring?

It doesn't matter if you have no knowledge of Spring at all.

When discussing Java-based web application development, we cannot leave out the Spring Framework, but I have seen many students hit a wall when trying to use the Spring Framework in applications without having a solid foundation in Java basics.

You can think of this as a lecture that includes the desire to prevent you from experiencing such problems.

Q. Using Java to create something on my own feels too vague and somewhat intimidating. Will taking this course make these feelings go away?

I don't think that feeling will go away just by listening to this lecture.^^;

However, if you complete the course to the end using the method I recommend and make the content covered in the lectures truly your own, I'm confident that you'll definitely be able to eliminate at least the fear of implementation.

Q. My implemented code might be very different from the instructor's code. What should I do?

Since I probably have more development experience than you all, I think there's a high likelihood that the code I write might be somewhat better code. (If you think otherwise, I'd be grateful for your feedback anytime. ^^;)

If you think the code I wrote is somewhat better code, I recommend that you try applying the code I wrote to the code you implemented.

Of course, you might not be able to judge whether it's better code or not, and it could take quite a bit of time to apply someone else's code to the code you've written.

However, I believe that you can better judge whether this is good or bad code only by applying it directly, and your skills will also improve further.


Q. Where can I download the lecture materials and source code explained in the course?

  • To download the lecture materials and source code explained in the course, click the Github link listed in theLearning Materials section below and download from the corresponding Repository.

Pre-enrollment Reference Information

Practice Environment

  • Operating System and Version (OS)

    • Any OS is fine as long as it's a PC environment OS.

    • However, you should be able to install JDK 17 or higher, and it's recommended that your computer has sufficient computing power (CPU, memory, etc.) to run IntelliJ IDE smoothly for the hands-on exercises.

  • Tools Used

    • JDK 17 (minimum requirement)

    • IntelliJ IDE

      • The IntelliJ IDE used in the lectures is the Ultimate version, but using the free Community version will not cause any problems at all.

      • Even if you don't have IntelliJ IDE, you can use any code editing tool you're comfortable with (such as Visual Studio Code, etc.).

    • Gradle 7.3 (minimum requirement) or higher

      • Since JDK 17 is compatible with Gradle version 7.3, I've aligned the versions between the two.

      • If problems occur due to version compatibility, it would be good to refer to Java Compatibility and try to match the versions as much as possible.

    • JUnit 5 (minimum requirements) or higher


Important Notes

  • If you would like to use the learning materials and code from the course in your personal space such as a blog, you must include the course title and instructor's name, and add the course link. Please understand that unauthorized distribution is not permitted otherwise.

Recommended for
these people

Who is this course right for?

  • Someone who studied Java but doesn't know what to do with it.

  • People who feel bored learning Java syntax

  • Someone who knows Java syntax but doesn't know where to start when asked to implement something.

  • Someone who wants to solidify their understanding of the basics of Java to become a backend developer.

  • Someone who wants to experience the joy of implementing Java applications.

  • Someone who needs practice implementing applications by thinking and contemplating on their own.

  • Someone who is not proficient in Java from an application development perspective

Need to know before starting?

  • Java

  • The practice of thinking for oneself

Hello
This is

6,416

Learners

246

Reviews

108

Answers

4.8

Rating

7

Courses

- 주력 언어 또는 기술 : Java, Spring Framework, RxJava, Reactor, Spring WebFlux

- (주)코드스테이츠(https://www.codestates.com)에서 Senior Educational Software Engineer(Backend)로 활동
(From 2022.03 To 2024.01.31)

- 프리랜서 개발자 및 강사로 활동(From 2024.02)

- 저서

안녕하세요? Kevin이라고 합니다. ^^

인프런에서 이렇게 강사로서 여러분들을 만나게 되어서 너무 반갑습니다.

어떤 분야든 마찬가지겠지만 특히나 소프트웨어 개발자는 끊임없이 변화하는 트렌드에 뒤처지지 않도록 항상 자기 자신을 갈고 닦는것이 개발자로써 살아남는 유일한 방법이라고 생각하며 항상 배우는 자세로 즐겁게 소프트웨어 개발을 하고 있는 개발자 중 한 명입니다.

제가 가지고 있는 지식과 경험이 다른 분들에게 조금이나마 도움이 되기를 바라면서 인프런에서 강좌를 시작하였습니다.

앞으로 수강생분들에게 현실적으로 도움이 되는 다양한 강좌로 꾸준히 찾아뵙도록 하겠습니다. 감사합니다.

 

질문이나 의견은 언제든지 환영하니, 이메일(it.village.host@gmail.com)로 편하게 얘기해주세요.

 

Curriculum

All

40 lectures ∙ (13hr 52min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

5 reviews

5.0

5 reviews

  • kevin님의 프로필 이미지
    kevin

    Reviews 3

    Average Rating 5.0

    Edited

    5

    100% enrolled

    Hello everyone! I seem to be the first to leave a review for this lecture again. ^^; As the saying goes, "blood is thicker than water," I'll give it 5 stars this time since I've put in a lot of effort to create this lecture. ^^ Although it's not well-known yet, I believe this mini-project series lecture can provide students with the hidden skills to cross the threshold into the job market as reasonably competent Java backend developers. Of course, it will take time, and you need to think for yourself and type out the code. I believe that `thinking + practice + repetition + application` is more important than memorization to win in the job market as a good developer. It will be tough, but I hope you complete this lecture well and that your implementation skills will be upgraded. See you in the lecture. Good luck!

    • jason님의 프로필 이미지
      jason

      Reviews 31

      Average Rating 5.0

      Edited

      5

      100% enrolled

      [Positive aspects of this course] This course served as a good indicator for self-diagnosing where my Java grammar is lacking before moving on to Spring or other Java-based technology stacks. As someone who is terrible at this, I plan to polish my Java fundamentals again and then retake this course from the beginning. [Course level] Including myself, if you lack overall Java fundamentals like Java 8, anonymous classes, interfaces, polymorphism, etc., this doesn't seem like an easy course. When I looked at the curriculum with the title "Java Introduction," I saw object-oriented programming and Java 8 at the very top and thought, "Huh? It'll take me several more years to get through the introduction??.." which made me consider the purchase. [Personal wish] As a personal wish, although it's already excellent, I think it would be great to have more diverse courses by level. After completing backend web development government-funded courses or bootcamps, people can create web pages with Spring, but I think many are weak on Java fundamentals like what the heap area is, what the method area is, how creating an instance returns a reference value to the heap area, etc. For a truly genuine Java introduction course, this course is sufficient for code-shortening techniques like Java 8, inner classes, anonymous classes, and Java 8. I think if a course is launched with many problems that help understand polymorphism and interfaces - the flower of object-oriented programming - through interface classes, implementation classes, main functions, etc. (even if the code is lengthy), many Java beginners would purchase it. I'm still reviewing stream API now, but I'm still very confused and can't adapt to putting interfaces and implementations in one class 😭😭 Next year, when I have a bit more fundamentals, I'll be able to adapt to even this, right? 😭

      • doomco07님의 프로필 이미지
        doomco07

        Reviews 29

        Average Rating 5.0

        5

        8% enrolled

        I'm looking forward to the new type of Java lecture.

        • kevin
          Instructor

          Thank you. Even if it takes a little time, I hope you'll listen to only the 'function implementation requirements' and 'prerequisites' first, rather than watching the entire lecture straight through, and then take the time to implement it yourself. ^^; I hope it helps you grow!

      • ohjaekwon5982님의 프로필 이미지
        ohjaekwon5982

        Reviews 3

        Average Rating 5.0

        5

        30% enrolled

        • smc781751님의 프로필 이미지
          smc781751

          Reviews 11

          Average Rating 5.0

          5

          30% enrolled

          $51.70

          Kevin's other courses

          Check out other courses by the instructor!

          Similar courses

          Explore other courses in the same field!