객체 지향 프로그래밍

Set이란?중복을 허용하지 않는 데이터 모음 Set은 순서를 보장하지 않고, 중복을 허용하지 않는 컬렉션입니다.대표 구현체는 HashSet, LinkedHashSet, TreeSet이 있습니다. 예를 들어,회원 ID가 같은 ID가 있으면 안 되겠죠?주민번호도 중복으로 존재하면 안 됩니다!이런 상황일 때 Set을 사용합니다.Set ids = new HashSet();ids.add("wooZzing");ids.add("test");ids.add("wooZzing"); // ID 중복!! ❌ 안 들어감!System.out.println(ids); // [wooZzing, test]✔️ 결과: 중복된 "wooZzing"은 한 번만 저장됨 Set을 사용하는 이유상황 예시Set이 적합한 이유출석부, 회원 ID, 이..
List란? 순서를 지키고, 중복도 OK! 데이터를 줄 세워서 관리하는 컬렉션 List는 순서가 있는 데이터 집합입니다.데이터를 입력한 순서대로 저장하고, 중복된 값도 허용해요. 즉, "철수", "영희", "민수"이렇게 넣으면, 순서대로 [철수, 영희, 민수] 로 저장되고,같은 값이 들어가도 괜찮아요.List names = new ArrayList();names.add("철수");names.add("영희");names.add("철수"); // 중복 허용! 언제 List를 사용할까요?학생 출석부처럼 순서가 중요한 경우쇼핑몰 장바구니처럼 중복 상품이 들어올 수 있는 경우음악 재생목록처럼 앞뒤 순서대로 처리해야 하는 경우 특징항목설명순서 유지⭕중복 허용⭕인덱스로 접근⭕ (0번부터 시작)대표 구현체Arra..
배열만으로 데이터를 관리하기엔 부족하다면?자바는 이를 위해 강력한 컬렉션 프레임워크(Collection Framework) 를 제공합니다. 컬렉션 프레임워크란? ✅ 여러 데이터를 쉽게 저장하고 꺼낼 수 있도록 만든 자바의 도구 모음입니다.쉽게 말하면, 자료 보관함이에요!순서를 유지하는 리스트형 보관함중복을 허용하지 않는 집합형 보관함이름표 붙여서 찾는 사전형 보관함➡ 자바는 List, Set, Map 등 다양한 인터페이스와 그 구현체를 통해중복 제거, 정렬, 키-값 저장, 순서 유지 같은 다양한 요구를 충족시켜줍니다. 왜 배열이 아닌 컬렉션을 써야 할까요?프로그래밍을 하다 보면,학생 명단, 상품 목록, 게시글 리스트처럼 여러 개의 데이터를 한꺼번에 저장해야 할 일이 정말 많아요.그럴 땐 가장 ..
throw 와 throws 는 뭐가 다를까요? 구분throwthrows의미예외를 직접 발생시킴예외가 발생할 수 있다고 선언위치메서드 내부메서드 선언부 (괄호 뒤)역할예외를 명시적으로 발생시킴호출한 곳에 예외 처리를 넘김함께 쓰는 대상예외 객체 (new Exception)예외 클래스 이름 (Exception) 간단하게 말하면?✅ throw➡ "예외를 직접 던질 때 사용하는 키워드!"예: 특정 조건에서 강제로 예외를 발생시킬 때throw new IllegalArgumentException("잘못된 입력입니다"); ✅ throws➡ "이 메서드는 예외를 던질 수도 있어~" 라고 알리는 키워드!예: 호출한 쪽에서 예외 처리를 하라고 넘길 때public void readFile() throws IOExceptio..
사용자 정의 예외란? 자바에서 기본으로 제공하는 예외 클래스(NullPointerException, IOException 등) 외에개발자가 직접 만드는 예외 클래스를 말합니다. 왜 사용자 예외가 필요할까요? 자바가 제공하는 예외들은 일반적인 상황에는 충분하지만,우리 서비스만의 특수한 예외 상황에는 부족할 수 있어요. 예시 상황로그인 시도 5회 초과 → LoginAttemptExceededException잔액 부족 → InsufficientBalanceExceptionVIP 전용 페이지 접근 → UnauthorizedVipAccessException👉 이럴 때 의미 있는 이름을 가진 예외 클래스를 만들어 상황을 더 명확하게 표현할 수 있습니다. 사용자 정의 예외 만드는 방법방법상속 대상예외 종류Ex..
예외(Exception)란?프로그램이 실행 중에 예상치 못한 문제가 발생하는 것을 말합니다. 예를 들어 배달 앱에서, 고객 주소가 비어 있으면 앱이 ‘어떻게 배달하지?’ 라며 멈출 수 있어요.이런 상황이 바로 예외입니다. 그래서 자바는 '예외(Exception)'라는 기능을 제공해서,개발자가 문제를 감지하고, 처리할 수 있게 도와줍니다. 예외가 발생하는 이유예외는 마치 우리가 예상하지 못한 상황을 만났을 때처럼 작동합니다.음식 주문 앱에서 고객이 주소를 입력하지 않음 → “배달할 곳이 없음!”은행 앱에서 잔액이 0원인데 출금 요청 → “돈이 없는데 출금?” 자바에서 예외가 발생하는 대표적인 상황 상황설명발생하는 예외0으로 나누기수학적으로 불가능ArithmeticException배열 범위 벗어나기없는..
프로그래밍을 하다 보면 어느 날 갑자기 이런 에러 메시지들을 만나게 됩니다.java.lang.NullPointerExceptionjava.lang.OutOfMemoryError둘 다 뭔가 문제가 있다는 건 알겠는데…Error? Exception?이게 뭐가 다른 걸까요? 이번 글에서는 자바에서 Error와 Exception이 각각 무엇인지, 그리고 이 둘의 차이점과 처리 방법에 대해 쉽게 설명해 드릴게요! 공통점Error와 Exception 모두 자바에서 문제가 발생했을 때 사용하는 Throwable 클래스의 자식 클래스입니다.java.lang.Throwable ├── java.lang.Error └── java.lang.Exception즉, 둘 다 "문제가 생겼어!" 라는 신호를 보내는 존재들입니다. ..
내부 클래스란? ✅ "클래스 안에 정의된 또 다른 클래스"를 말합니다. 보통 클래스는 하나의 파일에 하나씩 정의하는 것이 일반적이지만,B 클래스가 A 클래스의 논리적 일부이거나, 그 안에서만 사용될 필요가 있을 때,내부 클래스로 선언합니다. 예를 들어,우리가 자동차라는 클래스를 만든다고 해보겠습니다.그 안에 들어가는 ‘엔진’이라는 부품도 뭔가 복잡한 구조를 가질 수 있습니다.그런데 이 엔진은 자동차 안에서만 쓰이고, 밖에선 따로 필요가 없습니다. 그러면 어떻게 할까요?✅ "아예 자동차 안에 엔진 설계도도 같이 넣자!"➡ 이게 바로 내부 클래스입니다! 내부 클래스를 사용하는 이유항목설명논리적 관계 표현외부 클래스와 강하게 연관된 클래스를 내부로 묶어줌캡슐화 강화불필요하게 외부로 노출되는 것을 막음외부 클..
자바에서 추상 클래스(Abstract Class)와 인터페이스(Interface)는모두 “설계도”처럼 동작합니다.하지만 목적과 사용 방법은 다릅니다.이번 글에서는 두 개념의 차이를 비교 중심으로 쉽게 정리해보겠습니다! 추상 클래스와 인터페이스란?자바에서 코드를 설계할 때,공통된 기능이나 규칙을 미리 정해두고 싶을 때 사용하는 것이 바로✅ 추상 클래스와 인터페이스입니다.둘 다 객체를 만들 수는 없지만,“어떤 기능이 필요하다”는 규칙을 미리 정해주는 역할을 합니다.추상 클래스는 "일부 기능을 직접 제공하면서 나머지는 자식에게 맡기고 싶을 때"인터페이스는 "**기능 이름만 약속하고, 구현은 전적으로 자식에게 맡기고 싶을 때" 👇 자세한 내용은 아래 글을 확인해주세요! 추상 클래스 [Java] 28. 추상..
인터페이스란? 클래스가 어떤 기능을 반드시 구현해야 하는지 정해놓은 설계도입니다.메서드의 형태(이름, 매개변수, 리턴 타입)만 정의하고, 구현은 하지 않음클래스가 인터페이스를 implements(구현) 하면, 그 안의 메서드를 무조건 오버라이딩 해야 합니다.쉽게 말하면,"이런 기능이 필요해! 하지만 어떻게 만들지는 네가 알아서 해"👉 이런식으로 필요한 클래스에게 강제로 만들게 하는거죠! 문법* 인터페이스 (설계도)interface 인터페이스명 { 반환타입 메서드이름(매개변수);}interface 키워드로 선언메서드의 "이름만" 정의하고, 실제 내용(구현)은 없음모든 메서드는 기본적으로 public abstract (생략해도 자동으로 붙음)클래스에게 "이 메서드는 꼭 만들어!" 라고 기능을 강제하..
WooZzing
'객체 지향 프로그래밍' 태그의 글 목록