Skip to content

jangwoojoo-1/SSG_java_basic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SSG 자바 기초 및 객체 지향 프로그래밍 실습 (ssg_java_basic)

이 저장소는 자바 프로그래밍의 기초부터 객체 지향 개념, 고급 기능까지 다양한 예제 코드를 포함하고 있습니다. 각 패키지는 특정 주제를 다루며, 단계별 학습과 실습을 돕도록 구성되어 있습니다.

🗂️ 프로젝트 구성

1. javabasic_01 (자바 기초)

  • day1 ~ day3: 변수, 데이터 타입 (정수, 실수, 문자, 불리언), 형변환 (자동/강제), 연산자 (산술, 비교, 논리, 비트, 증감, 대입), 콘솔 입출력 (Scanner, printf).
  • day4 ~ day5: 제어문 (if, else if, switch), 반복문 (for, while, do-while), break, continue, Math.random().
  • 학습 내용 텍스트 파일: 각 날짜별 학습 내용을 요약한 .txt 파일 포함.

2. javabasic_02 (자바 OOP 기초)

  • day6 ~ day8: 배열 (1차원, 다차원), 객체 배열, 참조 타입 비교, String 객체 (리터럴 방식 vs new, equals(), hashCode(), intern()), StringBuffer (append, insert, delete 등).
  • day9: 클래스와 객체 (Student 예제), 메서드 (정의, 호출, 반환값, 매개변수, 가변 길이 매개변수), 생성자.
  • day10: 싱글톤 패턴 (SingleTone, ShopService), static 멤버, 은행 애플리케이션 예제 (BankApplication).
  • day11: 상속 (기본 개념, extends, 메서드 오버라이딩), 접근 제한자, 다형성 기초, 관련 실습 문제.
  • day12: 추상 클래스 (abstract), 추상 메서드, 관련 실습 문제 (도형 넓이 계산, 음료 가게).
  • day13: 인터페이스 (interface, 구현 implements), 디폴트 메서드, static 메서드, 다중 인터페이스 구현, 관련 실습 문제.

3. java_advanced_01 (자바 고급)

  • day13: 예외 처리 (try-catch-finally, throws, 사용자 정의 예외), 컴파일 예외 vs 런타임 예외.
  • day14: 제네릭 (<T>, 타입 파라미터), 컬렉션 프레임워크 기초 (List, Stack, Queue), AutoCloseable.
  • day15: 컬렉션 심화 (LinkedList vs ArrayList 성능 비교, Set, HashSet, TreeSet, Map, HashMap, Properties), 자료구조 (단일 연결 리스트, 이진 탐색 트리).
  • day16: 정렬 (Comparable, Comparator), 불변 컬렉션 (List.of, Map.of).
  • day17: 중첩 클래스, 익명 클래스, 람다식 (Lambda Expressions, 함수형 인터페이스 @FunctionalInterface).
  • day18 ~ day20: 스트림 API (Stream), 파이프라인, 중간 연산 (filter, map, flatMap, sorted, distinct), 최종 연산 (forEach, collect, sum, average, reduce, groupingBy), Optional.
  • day21 ~ day22: I/O 스트림 (InputStream/OutputStream, Reader/Writer, FileInputStream/FileOutputStream, FileReader/FileWriter, DataInputStream/DataOutputStream), 보조 스트림, 객체 직렬화 (Serializable, ObjectInputStream/ObjectOutputStream, transient), JSON 처리 (org.json), 파일 및 디렉토리 관리.
  • day23: 네트워킹 (InetAddress, Socket, ServerSocket), TCP 소켓 프로그래밍 (기본 에코 서버/클라이언트, 멀티 스레드 에코 서버).
  • day24: 스레드 (Thread 클래스, Runnable 인터페이스, 스레드 이름, 우선순위, 동기화 synchronized, 스레드 풀 ExecutorService), NIO (Non-blocking I/O, Channel, Buffer, Selector, 비동기 채널).

4. 미니 프로젝트

  • BookMarketProject: 온라인 서점 콘솔 애플리케이션 (사용자/관리자, 도서 목록, 장바구니, 주문).
  • board_project: 간단한 콘솔 게시판 (CRUD 기능 구현, 버전별 개선).
  • student_score_program: 학생 성적 입력, 저장, 정렬 및 출력 프로그램 (파일 I/O, 직렬화 활용).
  • tcp_ip_toy_project: TCP 소켓 통신 기반 상품 관리 프로그램 (Client-Server, JSON 활용).
  • json_tcp_chat_program: JSON 형식 메시지를 사용하는 TCP 기반 채팅 프로그램 (멀티 스레드 서버).

5. 기타

  • .gitignore: 버전 관리에서 제외할 파일 설정.
  • README.md: 프로젝트 개요 (현재 파일).
  • jjw.json, person.dat 등: 예제 실행 결과 또는 데이터 파일.

💡 주요 학습 내용

  • 자바 기본 문법: 변수, 타입, 연산자, 제어문, 반복문
  • 객체 지향 프로그래밍 (OOP): 클래스, 객체, 상속, 다형성, 추상 클래스, 인터페이스
  • 자바 고급 기능: 예외 처리, 제네릭, 컬렉션 프레임워크, 람다식, 스트림 API
  • I/O 및 네트워킹: 파일 입출력, 객체 직렬화, JSON, TCP/IP 소켓 통신, NIO
  • 스레드: 멀티스레딩, 동기화, 스레드 풀
  • 프로젝트 구현: 학습한 내용을 바탕으로 콘솔 기반 미니 애플리케이션 개발

느낀 점

  • 자바를 처음 배우면서 인터페이스 개념에서 어려움이 있었습니다.
  • 인터페이스를 처음 접했을 때, 이걸 어떻게 활용해야 하는 지 의문이 있었으나. 작은 실습들을 진행하면서 약한 결합이 주는 편리성을 체험해볼 수 있었습니다.
    • 인터페이스를 통해 결합도가 낮출 경우, 한 부분에서 문제가 생겨 수정이 필요할 때 그 부분만 수정하면 되기 때문에 유지보수가 매우 편리하다는 것을 직접 느꼈습니다.
  • 다만, 고급 기능 가운데, 제네렉이나 스레드 부분은 이론적인 부분은 학습했으나, 추후 미니 프로젝트를 진행하는 과정에서 활용해보지 못해서 지속적인 학습이 필요할 것 같습니다.

About

신세계I&C_자바개발자_객체지향프로그래밍

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages