Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 컬렉션프레임워크
- 정수형타입
- 집합_SET
- 환경설정
- EnhancedFor
- 객체 비교
- 예외미루기
- NestedFor
- 한국건설관리시스템
- 참조형변수
- 제네릭
- GRANT VIEW
- 메소드오버로딩
- 어윈 사용법
- cursor문
- 생성자오버로드
- 오라클
- 사용자예외클래스생성
- 다형성
- 대덕인재개발원
- Java
- 컬렉션 타입
- exception
- 인터페이스
- oracle
- 추상메서드
- 예외처리
- 자동차수리시스템
- abstract
- 자바
Archives
- Today
- Total
거니의 velog
230718 자바 강의 본문
상수 이름에만 snake case를 사용하고, 나머지는 camel case를 사용한다.
<클래스의 두 용도>
(1) 라이브러리 클래스 : 객체 생성 및 메소드 제공 역할
(2) 실행 클래스 : main() 메소드 제공 역할
[Product.java]
package ddit.chap06.sec02;
public class Product {
private static int pid; // 제품번호
private static String pName = "마커펜"; // 제품명
Product() { // 생성자 메서드. 멤버 필드 초기화.
pid++;
pName = "마커펜";
}
public static void showProduct() {
System.out.println("제품번호 : " + (++pid));
System.out.println("제품명 : " + pName);
}
public Product(int pid, String pName) {
this.pid = pid;
this.pName = pName;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getpName() {
return pName;
}
public void setpName(String pName) {
this.pName = pName;
}
@Override
public String toString() {
return "Product [pid=" + pid + ", pName=" + pName + "]";
}
}
[StaticExample.java]
package ddit.chap06.sec02;
public class StaticExample {
public static void main(String[] args) {
// Product p1 = new Product();
// System.out.println(p1); // ddit.chap06.sec02.Product@23ceabc1
// p1.showProduct();
//
// Product p2 = new Product();
// System.out.println(p2); // ddit.chap06.sec02.Product@5d5eef3d
// p2.showProduct();
//
// Product p3 = new Product();
// System.out.println(p3); // ddit.chap06.sec02.Product@56f4468b
// p3.showProduct();
// 인스턴스 생성시 힙 메모리에 새로운 객체가 생성되어 초기화가 일어나므로 각각의 객체 주소값이 다르다. 그래서 +1만 되는 것.
// Product 클래스에서 생성자 메서드에 int pid 변수에 static을 선언하면
// method 메모리의 literal pool에 0으로 한번만 초기화되어 고정되고
// 모든 객체가 공통적으로 이 변수를 참조하기 때문에 값이 증가하는 것.
Product.showProduct(); // 생성자 메서드에서 할 일을 static 메서드에서 할 수 있게 만들어 줌.
Product.showProduct();
Product.showProduct();
}
}
[Point.java]
package ddit.chap06.sec02;
// DTO : Data Transfer Object
// VO : Value Object, 읽기 전용.
public class Point {
// 캡슐화, private에 의해 구현되어 짐.
private int x;
private int y;
Point() {} // 기본 생성자. 매개변수가 없는 메서드.
// this, Super = JVM에서 제공하는 참조형 변수.
// 주소 저장할 때 this는 자기 자신 클래스의 주소 저장.
// 보통 생성자 메서드에서 많이 사용.
// 생성자 메서드의 매개 변수로 전달되는 지역 변수와 멤버 변수의 이름이 같을 때 자기 자신 클레스의 멤버 변수를 지칭하기 위함.
// Super : 자식 클래스에서 부모 클래스의 변수를 호출할 때 부모 클래스의 주소를 저장.
// this(), Super()
Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
// 애너테이션 : 실행이 되어지는 주석문.
// @Override : 재정의하다.
@Override
public String toString() { // 객체 내용을 문자열로 반환해주는 메서드
// return getClass().getName() + "@" + Integer.toHexString(hashCode());
// return getClass().getName() + "@" + hashCode();
return "Point [x=" + x + ", y=" + y + "]";
}
}
[Rectangle.java]
package ddit.chap06.sec02;
/*
문제 4 – 정수형 원점의 좌표(x,y)와
실수 타입의 가로와 세로를 입력받아 사각형을 만드는 클래스를 설계하고,
사각형의 면적을 계산하는 메서드를 포함시키시오.
*/
public class Rectangle {
private Point p1; // 현재 클래스(Rectangle)에 다른 클래스(Point)가 하나의 변수로 사용되는 관계를 포함 관계라고 한다.
private double width;
private double height;
Rectangle() {}
Rectangle(Point p1, double width, double height) {
this.p1 = p1;
this.width = width;
this.height = height;
}
public Point getP1() {
return p1;
}
public void setP1(Point p1) {
this.p1 = p1;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public void getArea() {
double area = width * height;
System.out.println(p1 + " 위치에 존재하는 사각형의 넓이는 " + area + " m2 입니다.");
}
}
[ShapeExample.java]
package ddit.chap06.sec02;
public class ShapeExample {
public static void main(String[] args) {
// Point p1 = new Point(100, 200);
// System.out.println("p1 : " + p1); // p1 : ddit.chap06.sec02.Point@23ceabc1. Object 클래스의 toString() 메서드가 실행.
// System.out.println(p1.toString()); // Point [x=100, y=200]. toString() 메서드를 @Override 하여 재정의함.
Rectangle rec1 = new Rectangle(new Point(100, 200), 25.5, 10.5);
rec1.getArea();
}
}
[Circle.java]
package ddit.chap06.sec03;
// Circle 클래스는 반지름, 원주율(상수 : 3.1415926), 원의 면적을 반환하는 메서드(getArea()).
public class Circle {
private double radius;
private final double PI = 3.1415926; // 상수명은 대문자로만 작성.
Circle() {}
Circle(double radius) {
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getArea() {
return radius * radius * PI;
}
}
[Cylinder.java]
package ddit.chap06.sec03;
/*문제 5 - 다음에 구현된 Circle 클래스를 참고로 다음을 만족하는 Cylinder 클래스를 작성하시오.
· 원통을 나타내는 Cylinder 클래스는 Circle형의 원과 실수형의 높이를 필드로 선언
· 메소드 getVolume()은 원통의 부피를 반환
· Cylinder 클래스의 main() 메소드에서 반지름이 2.8, 높이가 5.6의 원통의 부피를 출력
· Circle 클래스는 반지름, 원주율(상수 : 3.1415926), 원의 면적을 반환하는 메서드.
*/
public class Cylinder {
Circle c;
double height;
Cylinder() {}
Cylinder(Circle c, double height) {
this.c = c;
this.height = height;
}
public Circle getC() {
return c;
}
public void setC(Circle c) {
this.c = c;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public void getVolume() {
System.out.println("원기둥의 부피 : " + (c.getArea() * height));
}
}
[CylinderEx.java]
package ddit.chap06.sec03;
//문제 6 - 위에서 구현한Cylinder를 다음 조건에 맞도록 기능을 추가하여 작성하시오.
//· 다음과 같은 객체 생성이 가능하도록 생성자를 구현
//. Cylinder cd = new Cylinder(new Circle(2.8), 5.6);
public class CylinderEx {
public static void main(String[] args) {
Cylinder cd = new Cylinder(new Circle(2.8), 5.6);
cd.getVolume(); // 원기둥의 부피 : 137.92848151039996
}
}
[Student.java]
package ddit.chap06.sec01;
//문제 7 – 위 1번에서 구현한 Student 클래스를 다음을 만족하도록 기능을 추가하여 작성하시오.
//· 필드를 모두 private로 하고, getter와 setter를 구현하고
//· Student 클래스의 main() 메소드에서 Student 객체를 생성하여 setter를 사용하여 학과와 학번 필드에 적당 한 값을 입력 후 출력
public class Student {
private String major;
private int studID;
// 기본 생성자 생략. 인스턴스 생성시 컴파일러가 자동으로 넣어줌.
Student() {}
Student(String major, int studID) {
this.major = major;
this.studID = studID;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public int getStudID() {
return studID;
}
public void setStudID(int studID) {
this.studID = studID;
}
@Override
public String toString() {
return "Student [major=" + major + ", studID=" + studID + "]";
}
}
[StudentExample.java]
package ddit.chap06.sec01;
/*문제 1 -다음을 만족하는 Student 클래스를 작성하시오.
* · String형의 학과와 정수형의 학번을 필드로 선언
* · Student 클래스의 main() 메소드에서 Student 객체를 생성하여 학과와 학번 필드에 적당한 값을 입력 후 출력
*/
public class StudentExample {
public static void main(String[] args) {
// Student 클래스의 main() 메소드에서 Student 객체를 생성하여 setter를 사용하여 학과와 학번 필드에 적당 한 값을 입력 후 출력
Student std02 = new Student();
std02.setMajor("경영학과");
std02.setStudID(202301015);
System.out.println("학과 : " + std02.getMajor());
System.out.println("학번 : " + std02.getStudID());
System.out.println(std02.toString()); // Student [major=컴퓨터공학과, studID=2008102009]
}
}
'대덕인재개발원_Java' 카테고리의 다른 글
230720 자바 강의 (0) | 2023.07.20 |
---|---|
230719 자바 강의 (0) | 2023.07.19 |
230717 자바 강의 (0) | 2023.07.17 |
230714 자바 강의 (0) | 2023.07.14 |
230713 자바 강의 (0) | 2023.07.13 |