π§© νμ΅ λ¨μ : κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° II (OOP)
π νμ΅ λμ : <Javaμ μ μ 3ν>(λ¨κΆ μ± μ )
βOOP Part. 2 μμ μμ© νμ΅ μλ£(2022.01.22)
μμ©A-1. μμκ΄κ³ νμ© β
CHANNEL : 31
VOLUME : 9
[μλ§]
package com.reminder.exercises;
class Tv {
boolean power;
int channel;
int volume;
void power() {
power = !power;
}
void channelUp() {
++channel;
}
void channelDown() {
--channel;
}
void volumeUp() {
++volume;
}
void volumeDown() {
--volume;
}
}
class CaptionTv extends Tv {
boolean caption;
void displayCaption(String text) {
if(caption) {
System.out.println(text);
}
}
}
public class Ex01_315 {
public static void main(String[] args) {
/* μμν΄λμ€ μΈμ€ν΄μ€ μμ±ν΄ λΆλͺ¨ν΄λμ€ λ©€λ² μ¬μ© */
CaptionTv captv = new CaptionTv();
captv.power();
captv.channel = 30;
captv.channelUp();
System.out.println("CHANNEL : " + captv.channel);
captv.volume = 10;
captv.volumeDown();
System.out.println("VOLUME : " + captv.volume);
captv.displayCaption("[μλ§]");
captv.caption = true;
captv.displayCaption("[μλ§]");
}
}
μμ©A-2. μμκ΄κ³-ν¬ν¨κ΄κ³ νμ© β
Point[] λ°°μ΄ μ΄κΈ°ν λ°©λ²μ A, Bλ‘ λ³Ό μ μλ€.
λΆλͺ¨ν΄λμ€μΈ Shape.classμ void changeColor()λ₯Ό μΆκ°ν΄ μμν΄λμ€λ§λ€ μ€λ²λΌμ΄λ©νκ³ , main λ©μλμμ Triangle μμμ λ°κΏ¨λ€.
[p1=(100, 100), p2=(140, 50), p3=(200, 100), color=black]
[center=(150, 150), radius=50, color=black]
[p1=(100, 100), p2=(140, 50), p3=(200, 100), color=yellow]
package com.reminder.exercises;
public class Ex02_318 {
public static void main(String[] args) {
/* λ°°μ΄ μ΄κΈ°ν A. */
// Point[] p = new Point[3];
// p[0] = new Point(100, 100);
// p[1] = new Point(140, 50);
// p[2] = new Point(200, 100);
/* λ°°μ΄ μ΄κΈ°ν B. */
Point[] p = { new Point(100, 100), new Point(140, 50), new Point(200, 100) };
Triangle t = new Triangle(p);
Circle c = new Circle(new Point(150, 150), 50);
t.draw();
c.draw();
t.changeColor("yellow");
t.draw();
}
}
class Shape {
String color = "black";
void draw() {
System.out.printf("[color=%s]%n", color);
}
void changeColor(String color) {
this.color = color;
}
}
class Point {
int x;
int y;
public Point() {
this(0, 0);
}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
String getPoints() {
return "(" + x + ", " + y + ")";
}
}
class Circle extends Shape {
Point center;
int radius;
public Circle() {
this(new Point(0, 0), 100);
}
public Circle(Point center, int radius) {
this.center = center;
this.radius = radius;
}
@Override
void draw() {
System.out.printf("[center=(%d, %d), radius=%d, color=%s]%n", center.x, center.y, radius, color);
}
@Override
void changeColor(String color) {
this.color = color;
}
}
class Triangle extends Shape {
Point[] p = new Point[3];
public Triangle(Point[] p) {
this.p = p;
}
@Override
void draw() {
System.out.printf("[p1=%s, p2=%s, p3=%s, color=%s]%n", p[0].getPoints(), p[1].getPoints(), p[2].getPoints(), color);
}
@Override
void changeColor(String color) {
this.color = color;
}
}
μμ©B. μμ±μλ₯Ό μ΄μ©ν final λ©€λ²λ³μ μ΄κΈ°ν β
final νλ μ΄κΈ°ν λ°©λ²μ A. μ μΈκ³Ό λμμ μ΄κΈ°ν, B. μμ±μλ₯Ό ν΅ν μ΄κΈ°νκ° μλ€.
HEART 1
DIAMOND 5
package com.reminder.exercises;
class Card {
final int NUMBER;
final String KIND;
static int width = 100;
static int height = 250;
public Card() {
this(1, "HEART");
}
public Card(int num, String kind) {
this.NUMBER = num;
this.KIND = kind;
}
public String toString() {
return KIND + " " + NUMBER;
}
}
public class Ex03_346 {
public static void main(String[] args) {
System.out.println(new Card().toString()); //HEART 1
Card c = new Card(5, "DIAMOND");
System.out.println(c.toString()); //DIAMOND 5
}
}
μμ©C. private μμ±μμ public static λ©μλ β
λ³΄ν΅ ν΄λμ€μ μ κ·Όμ μ΄μμ κ°κ² μ°μ§λ§, νμμ λ°λΌ μμ±μμ λ³λμ μ κ·Όμ μ΄μλ₯Ό μΈ μ μλ€. private μμ±μ μ μΈνλ©΄ ν΄λμ€ λ΄λΆμμλ μΈμ€ν΄μ€ μμ±μ΄ κ°λ₯νμ§λ§ ν΄λμ€ μΈλΆμμλ μΈμ€ν΄μ€ μμ±μ΄ λΆκ°νλ€.
public static Singleton getInstance() {}
- λ°λΌμ public λ©μλλ₯Ό ν¨κ» μ 곡νλ€.
- μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ νΈμΆν μ μμ΄μΌ νλ λμμ΄λ―λ‘ static μ μΈνλ€.
private static Singleton s = new Singleton();
- getInstance() λ©μλμμ μ¬μ©ν μ μλλ‘ μΈμ€ν΄μ€ μμ± κ΅¬λ¬Έλ κ°μ staticμ΄μ΄μΌ νλ€.
- λ§μ½ μ¬κΈ°μ static ν€μλ μμ΄ μ μΈνλ€λ©΄,
μ°Έμ‘°λ³μ sλ₯Ό μ¬μ©νλ λͺ¨λ λ¬Έμ₯μ μ€λ₯κ° λ°μνλ€. non-static νλμΈ sλ‘λ static λμμ μ°Έμ‘°ν μ μλ€λ μλ―Έμ΄λ€: Cannot make a static reference to the non-static field s
Singleton s = new Singleton();μ€λ₯
- main λ©μλμμ μΌλ° μΈμ€ν΄μ€ μμ± κ΅¬λ¬Έμ μμ±νλ©΄ λ€μκ³Ό κ°μ΄ μ€λ₯ λ©μμ§κ° λνλλ€. private Singleton() μμ νμΈν μ μλ―μ΄ κΈ°λ³Έ μμ±μμ μ κ·Όμ μ΄μλ₯Ό privateμΌλ‘ λμκΈ° λλ¬Έμ ν ν΄λμ€μμλ μ΄λ₯Ό μ°Ύμ μ μλ κ²μ΄λ€: The constructor Singleton() is not visible
final class Singleton
- κΈ°λ³Έ μμ±μκ° privateμΈ ν΄λμ€λ λ€λ₯Έ ν΄λμ€μ λΆλͺ¨ν΄λμ€κ° λ μ μλ€. μμν΄λμ€μμ μ΄λ₯Ό νΈμΆν΄ μ¬μ©νλ κ²μ΄ μ λ λΆκ°νκΈ° λλ¬Έμ΄λ€. λ°λΌμ μ΄ κ°μ μ±μ§μ μμλ³Ό μ μλλ‘ final class μ μΈν΄μ£Όλ κ²μ΄ μ’λ€.
package com.reminder.exercises;
final class Singleton { /* μμν μ μλ ν΄λμ€ μ μΈ */
private static Singleton s = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
if(s == null) {
s = new Singleton();
}
return s;
}
}
public class Ex04_352 {
public static void main(String[] args) {
// Singleton s = new Singleton();
Singleton s = Singleton.getInstance();
}
}
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλ°μ μ μ] Ch 8. μμΈμ²λ¦¬ μμ μμ© νμ΅ (0) | 2022.01.22 |
---|---|
[μλ°μ μ μ] Ch 8. μμΈμ²λ¦¬ μ°μ΅λ¬Έμ νμ΄ (0) | 2022.01.22 |
[μλ°μ μ μ] Ch 7. OOP II μ°μ΅λ¬Έμ νμ΄ (0) | 2022.01.16 |
[JAVA] 14-2. μ μΆλ ₯ | 보쑰 μ€νΈλ¦Ό | μ§λ ¬ν (0) | 2022.01.14 |
[JAVA/μμ κ³Όμ practice] HashMap λ°μ΄ν° κ΄λ¦¬ νλ‘κ·Έλ¨ λ§λ€κΈ° (0) | 2022.01.13 |