강의

멘토링

커뮤니티

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

54 learners

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

Reviews from Early Learners

What you will learn!

  • 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,341

Learners

235

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

    수강생 여러분 안녕하세요! 이번 강의도 제가 제일 먼저 수강평을 남기게 되었네요. ^^; 팔은 안으로 굽는다고 일단 저 나름대로 열심히 노력해서 만든 강의이니까 이번엔 별 5개 주겠습니다. ^^ 아직 잘 알려지지는 않았지만 이번 미니 프로젝트 시리즈 강의는 수강생들에게 어느 정도 괜찮은 Java 백엔드 개발자로 취업 전선의 문턱을 넘을 수 있게 해주는 숨겨진 내공을 드릴 수 있을거라고 생각합니다. 물론 당연히 시간이 걸릴테고, 직접 생각하고 타이핑을 하셔서 코드를 짜 보셔야합니다. 암기보다는 `사고 + 실천 + 반복 + 응용`이 되어야 좋은 개발자로 취업 전선에서 승리할 수 있다고 생각해요. 힘이 드시겠지만 이번 강의를 마지막까지 잘 끝내시고 여러분들의 구현 능력이 한 단계 업그레이드 되길 멀리서 기원하겠습니다. 그럼 강의에서 뵐게요. 화이팅입니다!

    • doomco님의 프로필 이미지
      doomco

      Reviews 28

      Average Rating 5.0

      5

      8% enrolled

      새로운형태의 자바강의 기대됩니다.

      • Kevin
        Instructor

        감사합니다. 시간이 조금 걸리시더라도 강의부터 먼저 쭉 보시는것 보다는 `기능 구현 요구사항`, `사전 지식`까지만 먼저 들으시고 스스로 구현하는 시간을 꼭 가지시길 바래볼게요. ^^; 성장하시는데 도움이 되셨으면 좋겠습니다!

    • 오재권님의 프로필 이미지
      오재권

      Reviews 3

      Average Rating 5.0

      5

      30% enrolled

      • 홍태경님의 프로필 이미지
        홍태경

        Reviews 30

        Average Rating 5.0

        Edited

        5

        100% enrolled

        [해당 강의에 긍정적인 면] 스프링 혹은 다른 자바 기반 기술 스택으로 넘어가기 전 본인의 자바 문법에서 어디가 부족한지에 대해 자가진단 할 수 있는 좋은 지표가 되는 강의 였습니다 형편없는 저는 자바 기본기를 다시 다듬은 후 이강의를 처음부터 재수강 해보려 합니다 [강의수준] 저를 포함해서 자바8, 익명클래스, 인터페이스, 다형성등 전반적인 자바 기본기가 부족하면 쉽지 않은 강의 같습니다 자바 입문이라는 타이틀로 막상 커리큘럼을 보았을때 최상단에 객체지향, 자바8이 최 상단에 있는거 보고 어? 난 입문 떼려면 몇 년 더 걸리겠는데??.. 하며 구매를 고려 했으니까요 [개인적인 바램] 개인적인 바램으로는, 지금도 너무 훌륭하지만 단계별로 더 다양한 강의들이 있었음 좋을거 같습니다 빽엔드 웹 개발 국비 혹은, 부트캠프 수료 후 스프링으로 웹 페이지는 만들었지만, 정작 힙영역이 뭔지, 메소드 영역이 뭔지, 인스턴스를 생성하면 힙영역에 참조값이 반환하고 이런 자바 기본기는 약하지 않나 생각합니다 정말 찐 자바 입문 강의로 자바8, 내부클래스, 익명, 자바8 이런 코드 줄이는건 해당 강의도 충분하고 인터페이스 클래스, 구현 클래스, 메인 함수 등 코드수 는 길지만 객체지향의 꽃인 다형성, 인터페이스를 이해할 수 있는 문제들이 다수 있는 강의가 론칭되면 다수의 자바 입문자 분들이 구매하지 않을까 생각해봅니다 저는 지금도 stream api를 복습 하지만 아직도 인터페이스 , 구현체 을 한 클래스에 담는거 자체가 너무 혼란이 오고 적응이 되지 않습니다 ㅠㅠ 내년에 조금 더 기본기가 생기면 이 조차도 적응이 되겠죠? ㅠ

        • smc78님의 프로필 이미지
          smc78

          Reviews 10

          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!