1.객체란 무엇인가? |
객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신과 다른 것을 식별가능한 것을 말한다. 예를 들어 물리적으로 존재하는 학생, 회원 등과 추상적인 생산, 주문, 배송 등이 모두 객체가 될 수 있다
2. 아래의 클래스에 대하여, 메모리 그림을 그리시오. |
* 예제
Rectangle rec = new Rectangle();
==========================
public class Rectangle {
int height;
int width;
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getArea() {
return width * height;
}
}
* 그림으로 설명1
* 그림으로 설명2
* 메모리 규칙
- 주소는 임의로 설정할 수 있지만 Stack의 주소값이 Heap값보다 커서는 안된다. (3000은 임의값임)
- 항상 프로그램은 위에서부터 아래로 메모리가 쌓인다는 것을 알아야 한다.
3.클래스와 객체의 차이는 무엇인가? |
클래스란, 객체를 만들기 위한 설계도이다.
해당 설계도를 통해 만들어진 무언가! 이를 객체 또 다른 표현으로 인스턴스(instance)라 한다.
4. 1 부터 num 까지 합을 구하는 class 를 작성하도록 하시오. |
* 객체 부분
// 파일이름 : Assignment1_Mathod.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 31일
// 목 적 : 1부터 1000 까지 합을 구하는 class를 작성하도록 하시오.
public class Assignment1_Mathod{
public static void main(String[] args) {
Rectangle rectangle = new Rectangle();
rectangle.sum = 0;
rectangle.n = 1000;
System.out.println(rectangle.getArea1());
}
}
// 결과
// 1부터0까지의 합 : 0
// 1부터10까지의 합 : 55
// 1부터1000까지의 합 : 500500
* 클래스 부분
// 파일이름 : Rectangle.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 31일
// 목 적 : 1부터 1000 까지 합을 구하는 class를 작성하도록 하시오.
public class Rectangle {
int sum;
int n;
int getArea1() {
for (int i = 0; i <= n; i++) {
sum += i;
if (i % 10 == 0) {
System.out.println("1부터"+i+"까지의 합 : "+sum);
}
}
return sum;
}
}
//결과
//1부터0까지의 합 : 0
//1부터10까지의 합 : 55
//1부터1000까지의 합 : 500500
5.아래의 클래스를 작성하시오. |
* 클래스 부분
// 파일이름 : Assignment1_StarPrint.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 31일
// 목 적 : 객체, 클래스를 이용해서 정방향 3계단 별, 역방향 3계단 별을 만드시오
public class Assignment1_StarPrint{
public static void main(String[] args) {
StarPrint strPrint = new StarPrint();
strPrint.printTriangle(3);
strPrint.printReverseTriangle(3);
}
}
//결과
//*
//**
//***
//***
//**
//*
* 객체 부분
// 파일이름 : StarPrint.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 31일
// 목 적 : 객체, 클래스를 이용해서 정방향 3계단 별, 역방향 3계단 별을 만드시오
public class StarPrint {
void printTriangle(int age) {
for (int i = 1; i <= age; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
void printReverseTriangle(int num) {
for(int i = 1; i <= num; i++) {
for(int j = 1; j <= 4-i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
// 결과
// *
// **
// ***
// ***
// **
// *
6.생성자란 무엇인가? |
생성자(영어: constructor, 혹은 약자로 ctor)는 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 서브루틴을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 필요에 따라 자원을 할당하기도 한다.
7.디폴트 생성자란 무엇인가? |
생성자를 정의하지 않았을 때 자바 컴파일러에서 자동으로 만들어주는 생성자를 디폴트 생성자라고 한다.
디폴트 생성자는 매개변수가 없고 코드도 없다.
8.생성자의 용도에 대하여 설명하시오. |
생성자의 사용용도는 객체의 초기화 과정을 처리하기 위함입니다. 결국 생성자는 객체가 생성될 때 한번만 수행되는 특수한 메소드입니다. 이러한 생성자는 new키워드가 수행되면서 생성자가 호출됩니다. 객체 생성시 자바에서 자동으로 생성자를 만들어 줍니다.
9.null 에 대하여 설명하시오. |
null은 어떤 변수가 값을 가지지 않음을 나타내는 특별한 값으로 '널'이라 부릅니다. 상수이고 null 유형의 유일한 값이며, 대소문자를 구별하지 않습니다. null은 공백('')과 다른 값으로, '=='의 비교에서는 같은 것으로 간주됩니다.
10.자바의 명명 규칙에 대하여 설명하시오. |
1. 클래스
Ex)public class HelloWorld {}
- 클래스명에는 파스칼을 사용한다.
Ex) public interface Animal {}
- 인터페이스에는 특별한 접두사나 접미사를 사용하지 않고 파스칼을 사용한다.
Ex) public class Tiger implements animal{}
- 인터페이스를 구현한 클래스에는 특별한 접두사나 접미사를 사용하지 않고 파스칼을 사용한다.
Ex) public abstract class Animal {}
- 추상 클래스에는 특별한 접두사 접미사를 사용하지 않고 파스칼을 사용한다.
[키워드]
1) 파스칼 : 자바에서는 클래스의 명명 규칙인 첫 글자를 대문자로 한다는 규칙에 캐멀 표기법이 합쳐진 형태이다
2) 캐멀 표기법 : '카멜'은 '낙타'를 뜻한다. '카멜백 표기법(camelback case)'이라고도 불렀지만 요즘은 거의 쓰이지 않는다. 낙타의 등에 혹이 불룩하게 나와 있는 것에서 따온 이름으로, 각 단어의 첫 글자를 대문자로 표기하되 첫 단어의 첫 글자는 소문자로 표기하는 방식이다.
2. 메소드와 변수
* 메소드
Ex) public void SendMessage(String message) {}
- 메소드명에는 파스칼 표기법을 사용한다.
Ex) public void setDisplayName
Ex) public void getDisplayName
- 속성에 접근하는 메소드명의 접두사는 'get','set'을 사용한다.
Ex) public void findData(String data){}
- 데이터를 조회하는 메소드명의 접두사는 find를 사용한다.
Ex) public void inputData(HashMap data){}
- 데이터를 입력하는 메소드명의 접두사는 input을 사용한다.
Ex) public void modifyData(HashMap data){}
- 데이터를 변경하는 메소드명의 접두사는 modify를 사용한다.
Ex) public void deleteData(String data){}
- 데이터를 삭제하는 메소드명의 접두사는 delete를 사용한다.
Ex) public void initData(String data){}
- 데이터를 초기화 하는 메소드명의 접두사는 initialize을 사용한다.
Ex) public void isData(String Data){}
- 반환값의 타입이 boolean인 메소드는 접두사로 is를 사용한다.
Ex) public void loadData(){}
- 데이터를 불러오는 메소드명의 접두사는 load를 사용한다.
Ex) public void hasData(){}
- 데이터가 있는지 확인하는 메소드명의 접두사는 has를 사용한다.
Ex) public void registerAccount(){}
- 보다 지능적인 set이 요구될때 사용하는 메소드명의 접두사는 register를 사용한다.
Ex) public void createAccount(){}
- 새로운 객체를 만든뒤 해당 객체를 리턴해주는 메소드명의 접두사는 create를 사용한다.
Ex) public void toString(){}
- 해당 객체를 다른 형태의 객체로 변환해주는 메소드명의 접두사는 to를 사용한다.
Ex) public void getMembers(){}
- 해당 객체가 복수인지 단일인지 구분하는 메서드명의 접미사는 s를 사용한다.
Ex) public void getUserByName(String name){}
- B를 기준으로 A를 하겠다는 메소드명의 전치사는 By를 사용한다.
Ex) public void isData(String Data){}
- 반환값의 타입이 boolean인 메소드는 접두사로 is를 사용한다.
Ex) public void loadData(){}
- 데이터를 불러오는 메소드명의 접두사는 load를 사용한다.
Ex) public void hasData(){}
- 데이터가 있는지 확인하는 메소드명의 접두사는 has를 사용한다.
Ex) public void registerAccount(){}
- 보다 지능적인 set이 요구될때 사용하는 메소드명의 접두사는 register를 사용한다.
Ex) public void createAccount(){}
- 새로운 객체를 만든뒤 해당 객체를 리턴해주는 메소드명의 접두사는 create를 사용한다.
Ex) public void toString(){}
- 해당 객체를 다른 형태의 객체로 변환해주는 메소드명의 접두사는 to를 사용한다.
Ex) public void getMembers(){}
- 해당 객체가 복수인지 단일인지 구분하는 메서드명의 접미사는 s를 사용한다.
Ex) public void getUserByName(String name){}
- B를 기준으로 A를 하겠다는 메소드명의 전치사는 By를 사용한다.
3. 변수
Ex) for(int i = 0; i < 10; i++){}
- 반복문에서 인덱스로 사용할 변수는 i,j,k 등으로 사용한다.
- 변수와 메소드의 파라미터에는 카멜표기법을 사용한다.
- 변수에 약어를 사용하지 않고 모든 의미를 충분히 담는다.
- 한 글자로 된 이름을 사용하지 않는다.
- 선언된 지점에서 초기화하며, 가능한 사용범위를 최소화 한다. 숫자 0 레퍼런스 null
- 지역변수와 멤버변수(전역변수)는 변수명 앞에 밑줄(_)을 사용하여 구별한다.
- boolean타입의 변수는 접두사로 is를 사용한다 (ex.isCheck)
4. 상수
EX) int MAX_AGE;
- 상수는 모든 글자에 대문자를 사용하며 여러 단어를 연결시에는 _를 사용한다
5. camel case
kebab-case
android-studio
- 첫 문자는 소문자로 표기하고 그 이후에 연결되는 문자들의 첫자는 대문자로 표기.
6. snake case
snake_case
android_studio
- 모든 문자의 첫 자는 소문자로 표기하고 문자들 사이는 _(언더바)로 연결
11. 노래 한 곡을 나타내는 Song클래스를 작성하라. (객체, 클래스 생성) |
* 문제 예시
노래 한 곡을 나타내는 Song 클래스를 작성하라.
Song은 다음 필드로 구성된다.
- 노래의 제목을 나타내는 title
- 가수를 나타내는 artist
- 노래가 발표된 연도를 나타내는 year
- 국적을 나타내는 country
또한 Song 클래스에 다음 생성자와 메소드를 작성하라.
- 생성자 2개: 기본 생성자와 매개변수로 모든 필드를 초기화하는 생성자
- 노래 정보를 출력하는 show() 메소드
- main() 메소드에서는 1978년, 스웨덴 국적의 ABBA가 부른 "Dancing Queen"을
song 객체로 생성하고 show()를 이용하여 노래의 정보를 다음과 같이 출력하라.
1978년 스웨덴국적의 ABBA가 부른 Dancing Queen
* 클래스 부분
// 파일이름 : Assignment1_Song2
// 작성자 : 박지인
// 작성일 : 2022년 10월 31일
// 목 적 : 문장 표출 (클래스+객체)
public class Assignment1_Song2 {
public static void main(String[] args) {
Song2 song2 = new Song2();
song2.title = "Dancing Queen";
song2.artist = "abba";
song2.year = 1978;
song2.country = "스웨덴 ";
song2.space = " ";
System.out.println(song2.show());
}
}
// 결과
// 1978년 스웨덴국적의 abba가 부른 Dancing Quee
* 객체 부분
// 파일이름 : Song2
// 작성자 : 박지인
// 작성일 : 2022년 10월 31일
// 목 적 : 문장 표출 (클래스+객체)
public class Song2 {
String title;
String artist;
int year;
String country;
String space;
String show() {
System.out.println(year + "년 " + country + "국적의 " + artist + "가 부른 " + title);
return this.space;
}
}
//결과
//객체기 때문에 이쪽은 실행이 안됨.
12. 평균값 구하기 (객체+클래스 생성) |
* 클래스 부분
// 파일이름 : Assignment1_Grade
// 작성자 : 박지인
// 작성일 : 2022년 10월 31일
// 목 적 : 객체+클래스를 이용해 평균값 구하기
public class Assignment1_Grade {
public static void main(String[] args) {
// TODO Auto-generated method stub
Grade grade = new Grade(90, 70, 100);
System.out.println(grade.average());
}
}
// 결과
// 86
* 객체 부분
// 파일이름 : Assignment1_Grade
// 작성자 : 박지인
// 작성일 : 2022년 10월 31일
// 목 적 : 객채+클래스를 이용해 평균값 구하기
public class Grade {
int m;
int e;
int k;
int sum;
public Grade(int m, int e, int k) {
this.sum = m + e + k;
}
int average() {
return (sum / 3);
}
}
//결과
//86
13.문장 출력하기 (객체+클래스 생성) |
// 파일이름 : Assignment1_TV.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 31일
// 목 적 : 문장 출력하기
public class Assignment1_TV {
String manu;
int year;
int width;
Assignment1_TV(String manu, int year, int width) {
this.manu = manu;
this.year = year;
this.width = width;
}
void show() {
System.out.println("LG" + "에서 만든 " + year + "년 " + width + "인치 TV");
}
public static void main(String[] args) {
Assignment1_TV myTV = new Assignment1_TV("LG", 2017, 32); // LG에서 만든 2017년 32인치
myTV.show();
}
}
// ============================
// 출력결과
// LG에서 만든 2017년형 32인치 TV
14. 아래의 BankAccount 객체에 대하여 그림을 그리시오. |
* 예제
BankAccount ref1 = new BankAccount();
BankAccount ref2 = ref1;
* 그림 설명
15.n수를 입력해 구구단을 구하기 (객체+클래스) |
* 클래스 부분
// 파일이름 : Assignment1_Gugudan.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 31일
// 목 적 : 객채+클래스를 이용해 구구단 구하기
public class Assignment1_Gugudan{
public static void main(String[]args) {
Gugudan gugudan = new Gugudan();
System.out.println("<10>");
gugudan.printGugu(10);
System.out.println("<20>");
gugudan.printGugu(20);
}
}
//결과
// <10>
// 1 * 1 = 1 .. 10 * 10 = 100
// <20>
// 1 * 1 = 1 .. 20 * 20 = 400
* 객체 부분
// 파일이름 : Gugudan.java
// 작성자 : 박지인
// 작성일 : 2022년 10월 31일
// 목 적 : 객채+클래스를 이용해 구구단 구하기
public class Gugudan{
void printGugu(int n) {
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= 9; j++) {
System.out.println(i+" * "+j+" = "+(i * j));
}
System.out.println();
}
}
}
// 결과
// 객체라 단일 실행 불가능
* 참고 사이트 |
자바(Java)〃생성자의 조건 / 필드 초기화
자바에서 클래스의 3대 구성요소는 필드와 메소드 그리고 생성자로 이루어져 있는데요. 저번글에서 필드의 선언, 전역변수와 지역변수의 차이, 필드의 사용 예제들을 다루었고 이번에는 제
hunit.tistory.com
Java의 정석 제 6 장 객체지향개념 I-3 Java 정석 남궁성 강의 - ppt download
객체지향개념 I-1 객체지향개념 I-2 객체지향개념 I-3 Java 1. 객체지향언어란? 2. 클래스와 객체 의 정석 Chapter 6. 객체지향개념 I 1. 객체지향언어란? 객체지향개념 I-1 2. 클래스와 객체 3. 변수와 메
slidesplayer.org
'JAVA개념 시작하기' 카테고리의 다른 글
JAVA 8일차 - 생성자 (0) | 2022.12.05 |
---|---|
JAVA 7일차 - 변수 및 클래스와 객체 (0) | 2022.12.05 |
Java 5일차 - 1주일 치 정리 (변수~메소드) (0) | 2022.10.31 |
JAVA 4일차 - 실행 흐름과 컨트롤 (0) | 2022.10.27 |
JAVA 3일차 - 상수와 형 변환 & 연산자 (0) | 2022.10.26 |