총 10분 중 11분
2001
시즌 2개, 그리고 영화
시즌 2:
5화
“아일랜드”
출연: 이나영, 김민준, 김민정, 현빈
장르: 애초에 역경을 딛고 이룩하는 숭고한 사랑이란 없다. 그 역경 자체가 사랑이다.
프로그램 특징: 그 곳에서 살아남는 사랑이 어떤 모습으로 걸어오는지 기다려 보고 싶다.
장르: 애초에 역경을 딛고 이룩하는 숭고한 사랑이란 없다. 그 역경 자체가 사랑이다.
프로그램 특징: 그 곳에서 살아남는 사랑이 어떤 모습으로 걸어오는지 기다려 보고 싶다.
회차
-
[JAVA] 객체지향의 꽃: 클래스0417분OOP 프로그래밍이 뭘까요?Object-Oriented Programming 에서 Object는 데이터(필드)와 메소드를 하나로 묶어서 사용하겠다는 개념입니다.Encapsulation → 정보 보안Inheritance → 유지보수 용이Polymorphism → 클래스 형변환: 실무에서 많이 사용 클래스 기본 구조 field, method, Constructor필드와 메소드는 선택적으로 가질 수 있다. public class Car { String company = "현대자동차"; String model; String color; int maxSpeed; // 생성자 선언하지 않으면 자동 선언된다. // 선언한 경우에는 필요한 경우에 대한 선언자를 만들어줘야 한다. Car(..
-
[JAVA] 이것이 자바다(3판) 6장 20번 답안0417분20. 키보드로부터 계좌 정보를 입력받아 계좌를 관리하는 프로그램입니다. 계좌는 Account 객체로 생성되고 BankApplication에서 길이 100 Account[] 배열로 관리됩니다. Account.classpackage ThisisJAVA.ch06.bank;public class Account { static final int MIN_BALANCE = 0; static final int MAX_BALANCE = 1000000; String accountNum; String accountOwner; int balance, withdraw, deposit; Account(String accountNum, String accountOwner, int deposit) ..
-
[BOJ 2178][JAVA] 공백없이 입력된 문자 하나씩 받아올때0416분문제 2178 문제링크 N×M크기의 배열로 표현되는 미로가 있다.101111101010101011111011미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다.입력첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.출력첫째 줄에 지나..
-
[JAVA] 참조형 : 배열 초기화, 복사0416분Data TypePrimitive TypeReference Type정수 실수논리ArrayEnumClassInterfacebytecharshortintlongfloatdoubleboolean 참조형에서 가장 많이 사용되는 배열을 보자. 배열은 마지막 인덱스에 length를 가진다. 배열은 크기가 정해지면 변경할 수 없다. 배열명(배열 변수:scores)는 stack에 저장되어 heap 영역에 생성된 배열을 참조하는 방식으로 이용한다. 배열 변수(scores)는 힙 영역의 배열 주소를 저장한다. 따라서 인덱스로 접근할 수 있다.배열 내부는 같은 type 값으로 관리하나, 해당 배열이 가리키는 주소의 객체 타입은 다를 수 있다. 배열 초기화// 정적 초기화String season = {"Spring", ..
-
2025 매경테스트 최우수0415분저는 경제 뉴스 조금 보고 듣고 했어서 단어가 익숙한 정도의 노베이스입니다. 금융권 취업하고 싶어서 매경테스트 응시하게 되었습니다.공부 방법은 최대한 문제 많이 풀기로 했어요. 자꾸 공부하면서 효율따지게 되네요 ㅠ ㅅ ㅠ여러 블로그와 독학 후기를 참고한 결과, 단어 많이 외우면 무조건 이득이더라구요. 저는 에듀윌 2주 끝장 사서 시사상식 용어북만 뜯어서 외웠어요. 찐 공부방법한 2주? 잡고 시작해서 문제 위주로 공부했어요.1. 매경에서 올려준 모의고사 3회를 풀면서 오답합니다. 모르는 단어, 개념은 지피티한테 물어보고 오답노트에 정리했어요. 매경TEST 모바일 exam.mk.co.kr 2. 시사용어 암기! 시험 일주일~이주일 전에 올라온 단어들 한 번씩 보고 가면 무조건 나온답니다. 에듀윌 시사 단어..
-
[JAVA] 이것이 자바다(3판) 5장 9번 답안0415분9. 키보드로 학생 수와 각 학생들의 점수를 입력받고 최고 점수 및 평균 점수를 출력하는 코드를 작성해보세요.package ch05.referenceType;import java.util.Scanner;public class Chap5 { public static void main(String[] args) { boolean run = true; Scanner sc = new Scanner(System.in); int studentNum = 0; Integer[] scoreList = null; int max = 0; int total = 0; while (run) { System.out.pr..
-
웹 동작 전체 구조: 자바를 왜 배워야 할까?0415분FrontendTransfer(http)BackendClient(Browser)HTTP Request Header요청 메타정보, 주소(URL)웹서버HTTP에 의한 단순한 요청 HTML 처리HTML 아닌 요청(API, DB)⇢WAS요청에 대해 JAVA로 DB 처리 같은 특정 처리하는 프로그램DB로 SQL 요청 ⇢⇠ 웹서버에 HTML 반환 DB⇠ 요청 값에 대해 결과 반환Request Body POST (JSON, Form)HTTP Response HeaderStatus Code(200)Response BodyHTML, JSON: API 응답 결과웹을 크-게 보면 클라이언트의 요청 [Client (PC/Mobile)] ⇢ [HTTP Server (Vue/React + Router)] ⇢ [Applicatio..
-
[JAVA] JVM 런타임 영역 동작0415분OS는 실행 중인 프로그램을 프로세스 단위로 관리한다. 자바 프로그램을 시작하면 JVM 프로세스가 생성된다. 이 프로세스가 main() 메소드를 호출한다. JVM은 운영체제에서 할당 받은 메모리 영역을 메소드 영역, 힙 영역, 스택 영역으로 구분해서 사용한다.메소드 영역: 바이트코드 파일을 읽은 내용이 저장되는 영역스택 영역: 메소드를 호출할 때마다 생성되는 프레임이 저장되는 영역힙 영역: 객체가 생성되는 영역. 객체 주소는 메소드 영역과 스택 영역의 상수와 변수에서 참조한다. JVM → 클래스 로드 → main() 찾아 실행근데 main()은 아직 객체가 없기 때문에 클래스 이름만으로 호출하기 위해 메소드 영역(static)에 올라가서 클래스 로딩 시 바로 준비된다. public static void..
-
[BOJ 10552][JAVA] 박싱/언박싱0415분[Silver II] DOM - 10552문제 링크성능 요약 메모리: 178132 KB, 시간: 1000 ms분류 너비 우선 탐색, 깊이 우선 탐색, 그래프 이론, 그래프 탐색제출 일자 2025년 4월 15일 12:16:15문제 설명In a retirement home, N senior citizens are watching television. The television programme consists of M channels denoted with numbers from 1 to M. Each of the pensioners has their own favourite and hated TV channel.If the television is currently displaying the hated c..
Computer Science/Object Oriented Programming
[JAVA] 객체지향의 꽃: 클래스
728x90
반응형
OOP 프로그래밍이 뭘까요?
Object-Oriented Programming 에서 Object는 데이터(필드)와 메소드를 하나로 묶어서 사용하겠다는 개념입니다.
- Encapsulation → 정보 보안
- Inheritance → 유지보수 용이
- Polymorphism → 클래스 형변환: 실무에서 많이 사용
클래스 기본 구조
field, method, Constructor
- 필드와 메소드는 선택적으로 가질 수 있다.
public class Car {
String company = "현대자동차";
String model;
String color;
int maxSpeed;
// 생성자 선언하지 않으면 자동 선언된다.
// 선언한 경우에는 필요한 경우에 대한 선언자를 만들어줘야 한다.
Car(){}
Car(String model){
this.model = model;
}
Car(String model, String color){
this.model = model;
this.color = color;
}
Car(String model, String color, int maxSpeed){
this.model = model;
this.color = color;
this.maxSpeed = maxSpeed;
}
}
객체 생성에는 생성자 호출이 반드시 필요하다.
public class CarExample {
public static void main(String[] args) {
Car car1 = new Car();
Car car2 = new Car("자가용");
Car car3 = new Car("자가용", "빨강");
Car car5 = new Car("버스", "핑크", 500);
클래스 선언 방법에 따른 멤버의 구분
인스턴스instance 멤버 | 객체 소속 멤버(객체 생성에만 사용 가능) - field, method |
정적static 멤버 | 클래스 고정 멤버(객체 없이도 사용 가능) - 메소드 영역(static) 클래스에 고정적으로 위치하는 멤버 |
static
클래스(바이트코드)가 클래스 loader에 의해 로딩되면 바로 메소드 영역(바이트코드를 저장 위치)에 고정된다. 클래스가 메모리 로딩되면 객체 생성없이 메소드나 필드를 바로 . 연산자로 접근해 사용 가능하다
→ 객체마다 가지고 필요가 없는 공용적인 값이나 메소드는 정적(static)으로 선언
- static field는 객체 생성 없이도 사용할 수 있기 때문에 생성자 초기화 작업을 하지 않음
- static block에서 인스턴스 멤버를 사용하고 싶으면 생성자로 객체 생성 후 참조 변수(this 불가)로 접근
public class Calculator {
String color; // 인스턴스: 계산기별로 색이 다를 수 있다.
static double pi = 3.1450; // 스태틱: 값 고정
static String info;
void setColor(String color) this.color = color; // instance
static int plus (int x, int y) return x+y; // static method
static {
info = "pi is " + pi;
// 객체 생성
Calculator cal = new Calculator();
// instance member
cal.color = pink;
}
}
double result1 = 10 * 10 * Calculator.pi;
int result2 = Calculator.plus(10,5);
인스턴스 멤버에 접근하기 위해 this 이용
> 생성자와 메소드의 매개변수명이 인스턴스 필드명과 동일한 경우 인스턴스 필드임을 강조하기 위해 사용
package ch06.sec09;
public class Car {
//필드 선언
String model;
int speed;
//생성자 선언
Car(String model) {
this.model = model; //매개변수를 필드에 대입(this 생략 불가)
}
//메소드 선언
void setSpeed(int speed) {
this.speed = speed; //매개변수를 필드에 대입(this 생략 불가)
}
void run() {
this.setSpeed(100);
System.out.println(this.model + "가 달립니다.(시속:" + this.speed + "km/h)");
}
}
- 필드는 초기값을 주지 않아도 자동 초기화된다.
상수 선언 관례
static final double EARTH_SURFACE_AREA = 5.147185403641517E8;
// 객체마다 저장할 필요도 없고, 값 변경도 필요없(여러 개의 값을 가지지 않)기 때문에 static && final
// snake 표기법
- final field에 초기값을 줄 방법은 필드 선언 시, 생성자에서 초기값 대입 뿐이다.
접근 제한자 / 패키지
패키지는 클래스의 일부분으로 클래스 식별 용도로 사용한다. 다른 패키지에 있는 클래스를 이용하려면 import 문을 이용해서 어떤 패키지 클래스를 사용할 것인지 명시해야 한다.
- 패키지에 속한 바이트코드 파일(.class)은 따로 떼어내어 다른 디렉토리로 이동할 수 없다.
Access Modifier | 제한 범위 | 제한 대상 |
public | 없음 | 클래스, 필드, 생성자, 메소드 |
protected | 같은 패키지이거나 자식 객체 | 필드, 생성자, 메소드 |
(default) | 같은 패키지 | 클래스, 필드, 생성자, 메소드 |
private | object 내부 | 필드, 생성자, 메소드 |
클래스는 public과 default(접근 제한자가 붙지 않은 상태)를 가질 수 있다.
필드는 private로 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 할 수 있다. → Encapsulation
객체 생성을 제한하고 싶으면 생성자를 private로 제한해 외부에서 new 연산자로 생성자를 호출할 수 없도록 막을 수 있다.
→ Encapsulation
예시로 애플리케이션 전체에서 한 개의 객체만 생성해서 사용하는 싱글톤 Singleton 패턴을 보자
public class Singleton{
private static Singleton singleton = new Singleton();
private Singlgeton() {}
public static Singleton getInstance() {
return singleton;
}
}
- static : 객체 생성이 불가능하니 내부 값을 객체 생성없이 이용할 수 있도록 하고, private 로 외부에서 static field 변경을 못하도록 막는다.
- private 생성자를 선언해 외부에서 객체 생성이 불가능하도록 막는다.
- public static method로 객체를 새로운 객체로 복사해서 사용할 수 있도록 선언한다.
728x90
'Computer Science > Object Oriented Programming' 카테고리의 다른 글
이것이 자바다(3판) 9장 익명객체 풀다가 new와 final을 이해하기 위해 JVM 메모리 동작 공부 (1) | 2025.04.25 |
---|---|
[JAVA] 이것이 자바다(3판) 7장 상속 확인문제 답안 (0) | 2025.04.23 |
[JAVA] 이것이 자바다(3판) 6장 20번 답안 (0) | 2025.04.17 |
[JAVA] 참조형 : 배열 초기화, 복사 (1) | 2025.04.16 |
[JAVA] 이것이 자바다(3판) 5장 9번 답안 (1) | 2025.04.15 |
2025:04:17
Computer Science/Object Oriented Programming
[JAVA] 객체지향의 꽃: 클래스