일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 갤러리제작 #갤러리만들기 #jsp갤러리 #jsp게시판 #jsp프로그래밍 #jsp웹프로그래밍 #jsp웹 #jsp모델1방식 #사진업로드 #jsp사진업로드 #jdbc6 #jdbc드라이버다운 #jdbc드라이버무료다운
- 어노테이션 #@WebServlet #WebServlet #
- Controller
- 방통대 #방송통신대학교 #컴퓨터과학 #컴퓨터과학과 #컴과 #방통대컴퓨터과학과 #방통대컴과 #방통대파이썬 #방통대C #방통대자바
- QUERY #DML #SQL문 #내림차순정렬 #오름차순정렬
- java #array #자바 #배열 #프로그래밍 #코딩 #자바프로그래밍
- spring #스프링 #전자정부표준프레임워크 #표준프레임워크 #자바스프링 #스프링다운로드 #자바스크립트 #웹프로그래밍설정 #웹프로그래밍셋팅
- 자바 #웹자바 #JAVA #WEB #WEBJAVA #WEBPROGRAMMING #웹 #웹프로그래밍 #코딩 #CODING #모델1 #모델2 #모델1방식 #모델2방식
- Doit #Doit오라클 #Doit시리즈 #연습문제
- ORACLE #TIGER #SCOTT #SCOTT계정 #오라클학습계정 #프로그래밍 #SQL #SQLORACLE #오라클 #오라클연습 #오라클연습계정 #오라클연습문제 #WHERE절 #오라클조건절
- 마이바티스환경설정
- 정처기필기합격 #정처기합격후기
- 정처기 #정처기필기 #정보처리기사 #정보처리기사필기 #정보처리기사2023 #정처기2023 #정처기3회 #정보처리기사3회 #정보처리기사실기 #정처기실기 정처기합격
- jsp #게시판만들기 #자바로게시판만들기 #웹테스트 #JNDI #myora #Oracle #오라클 #DAO #DTO #아파치톰캣 #웹자바셋팅 #모델1 #모델1방식 #모델1방식웹프로그래밍 #웹프로그래밍
- 기말고사 #방통대기말고사 #방통대후기 #방통대기말고사후기 #방통대2023년1학기 #방통대1학기 #방통대C프로그래밍 #방통대장학금 #방통대영어회화1
- union #sql99 #외부조인 #오라클조인 #sql조인 #자체조인 #비등가조인 #비등가조인 #테이블복사 #오라클테이블 #null인데이터출력
- 자바 #웹자바 #webJava #java #코딩 #코딩초보 #ojdbc #서블릿 #자바서블릿 #javaServelet #servelet #httpServlet
- tern다운로드 #메이븐다운로드 #maven #스프링라이브러리 #자바라이브러리 #톰캣설정 #WAS #웹어플리케이션서버
- html #자바와서블릿 #자바와웹연결 #웹연결
- View #
- cos.jar #cos드라이버 #파일업로드드라이버 #루피는귀여워 #마이바티스 #MyBatis #마이바티스sql #마이바티스DB #마이바티스jsp #마이바티스이클립스 #mapper #config.xml #마이바티스다운로드
- Model #
- sql #오라클 #불리언형 #boolean #webjava #java #jsp #Mybatis #마이바티스 #마이바티스환경설정 #모델1 #모델1프로그래밍 #Batis #마이바티스다운로드 #web설정 #웹프로그래밍 #게시판 #게시판제작 #게시판만
- Init-param #context-param #
- 정처기3회 #정보처리기사2023
- 8 실무에서 가장 많이 사용하는 SQL
- 서블릿 #자바모델1 #자바모델2 #mvc #mvc패턴
- 서블릿선언 #서블릿선언방법 #
- 자바웹프로그래밍
- web.xml #배포지시자 #서블릿테스트
- Today
- Total
장미의 개발일기
Java프로그래밍: 클래스 정의하기 , 클래스 만들기 본문
저번 학기에 개판이래도 C++을 수강하고 보니 클래스에 대한 개념이
어느정도 잡혀있긴 해서 이해하긴 수월했다. 다만 C,C++은 함수 단위위주인 언어고
자바는 클래스 단위라 차이점도 은근 많은 듯?
다음주 국비과정에서 드디어 클래스로 진도 나갈 것 같은데 예습 겸 해서 학교 강의 들으면서
교재로 공부했다.
클래스의 개념이나 설명에 대한 것은 이 포스팅에서 생략한다.
클래스
클래스를 사용하는 이유? => 프로그램을 재사용하기 위한 것.
객체 => 클래스를 실체화 한 것. 현실에 실제로 만드는 것. (ex) 클래스= 붕어빵 틀/객체=붕어빵
이렇게 실체화 된 객체를 인스턴스라고 한다.
: 객체가 곧 인스턴스고, 참조되지 않은 인스턴스는 쓰레기(gabage)다.
- 접근 제어자 (클래스, 필드,메소드, static 필드/메소드 등 전부 해당)
1생략할 경우: 같은 패키지 내의 다른 클래스들에서 사용가능 / 해당 클래스 내부 안
2 private : 해당 클래스 내부에서만 사용가능
3 public : 해당 클래스를 참조 가능한 곳이면 어디든 사용가능
4 protected : 같은 패키지 내에서, 해당 클래스 안에서, 해당 클래스를 상속받은 서브 클래스에서 사용가능
클래스 정의하기
*멤버필드는 주로 praivate로 선언하여 외부에서 접근을 하지 못하게 한다.
*대신에 메소드를 public으로 선언하여, 메소드를 통해 멤버필드를 간접적으로 접근할 수 있도록 한다.
=> 캡슐화 ( 감출것은 감춘다)
*생성자: 특별한 메소드
객체 생성시 자동으로 호출되는 메소드. 객체가 사용할 변수나 필드 등을 초기화하거나 객체의 사용을 위해
필요한 초기화 작업을 수행한다.
*형식: 접근제어자 클래스이름{ }
-메소드지만 반환자료형 표기가 불가능하며, 이름은 클래스명과 똑같아야만 한다.
()안에는 주로 클래스의 메소드의 매개변수에 들어갈 인수가 들어간다.
-대부분 public 으로 선언된다.
-생략할 경우 기본 생성자(디폴트생성자)가 자동으로 만들어지는데, 슈퍼 클래스의 기본 생성자를 호출해준다.
Static 필드와 메소드
각 객체가 소유한 필드와 메소드는 'non-static'으로 각 객체의 필드,메소드 전부 독립적이다. =>필드: 인스턴스 변수
반면에 Static 필드와 메소드는 단 하나의 유일한 존재로, 모든 객체가 이 필드와 메소드를 공유한다. => 필드:클래스 변수
*초기화
static 필드와 메소드의 선언시에 초기화를 하는 것이 좋다.
(반대로 일반 필드,메소드는 생성자를 통해 초기화하는 것이 좋다)
(반대로도 가능하지만 비효율적이다)
- 일반 메소드에서 static 필드를 사용할 수 있지만, static메소드에선 static 필드만 사용할 수 있다는 점에 유의하자.
*final 필드와 final 메소드, final 클래스
상수를 선언하는 식과 비슷하게 생각하면 된다.
final로 선언한 클래스는 서브클래스를 만들 수 없으며, final로 선언한 메소드와 필드 역시
오버라이딩과 값을 바꿀 수가 없다.
클래스를 이용하여 객체지향적인 프로그램 만들기
생각보다 교재의 예제가 이해하기 쉽게 되어 있어서 놀랐다.
바로 이클립스로 원 클래스-원 넓이 구하기 프로그램 - 원기둥 클래스-원 기둥 부피 구하기 프로그램 만들기를
연습해보았다.
(public 클래스는 한 소스파일에 단 하나만 존재해야하며, public 클래스의 이름은 소스파일과 일치한다는 점을 유의하자)
시작하기에 앞서, 클래스 윗 칸에 간단히 알고리즘식으로 설명을 만들었다.
//1. 원을 구성하는 클래스를 만든다.
// 필드: 반지름 메소드: 넓이를 구한다. 생성자: 반지름의 길이를 지정한다. )동작)
//2. 원 클래스를 이용하여 원의 넓이를 구하는 프로그램을 만든다.
// 원클래스 객체를 생성한다. -> 원 클래스의 메소드를 이용하여 원 넓이를 구한 후, 출력
//3. 원 클래스를 이용하여 원 기둥 클래스를 만든다.
// 필드: 원클래스 객체(넓이), 높기둥의 높이 메소드: 원기둥의 부피 구하기 / 생성자: 원의 넓이와 높이를 지정하는 동작
//4. 원 기둥 클래스를 이용하여 원 기둥 부피를 구한다.
// 원 기둥 클래스의 객체를 생성 => 원기둥 클래스의 메소드로 원 기둥 부피를 구하고 출력.
원 클래스 만들기 및 반지름 구하기 프로그램
package my;
class Circle{
private int r; // 필드 반지름 단위는 cm
public Circle(int a) {//생성자: 반지름 값을 설정한다.
r = a;
}
public double getArea() {//원의 넓이를 구하는 메소드
return r*r*3.1415;
} // 직접 접근 불가한 필드 r을 간접적으로 접근가능하도록 해준다.
}
public class MakingClass_Circle2 {
public static void main(String[] args) {
Circle c = new Circle(20);
//원 클래스의 객체 c 를 생성, 20cm반지름을 가진 원
//이때 객체 c의 생성자가 호출된다.
double res = c.getArea();
//객체 c의 넓이 구하기 메소드를 호출한다.
// 그 결과를 double형 변수 res에 저장
System.out.println(res);
//그 결과값을 출력
//변수 res 생성없이 바로 c.getArea()를 넣어도됌
}//main
}
원기둥 클래스 만들기 및 원기둥 부피 구하기 프로그램 만들기
package my;
class cylinder{
private Circle c; //이미 만들어진 원 c
private int height; // 원기둥의 높이
public cylinder(Circle d,int a) {
c = d;
height = a;
} //생성자: 두 필드에 값을 설정해준다.
// d,a는 매개변수
public double getVolume() {
return c.getArea()*height;
//원기둥 부피 구하기 : 밑 원넓이*높이
// c*height 랑 헷갈리지 말자. c는 객체
// c.getArea는 c라는 원의 넓이가 반환되는 메소드
}
}
public class MakingClass_Cylinder {
public static void main(String[] args) {
Circle c = new Circle(20);
//여기에서도 원 객체를 생성해줘야 한다 = 메모리할당
// 반지름은 똑같이 20으로 설정
cylinder cy = new cylinder(c, 10);
//원 객체 c를 먼저 생성해줘야 여기에 인자로 넣을 수 있다.
double res = cy.getVolume();
// double형 변수 res에 원기둥 값을 저장
System.out.println(res);
}//main
}
아직 손에 익숙치 못해서 실수를 좀 하기 하는데... 클래스 개념에 대해서는 터득한 거 같다 !!
파이썬 강의 밀린거 들으러 간다 ㅠㅠㅠ
'방통대 컴퓨터과학과' 카테고리의 다른 글
파이썬 프로그래밍 : 6강 선택구조 , 7강 반복구조 (0) | 2023.04.17 |
---|---|
파이썬 프로그래밍 4~5강 순차구조 (0) | 2023.04.16 |
인터페이스와 상속: 클래스와 같이 사용해보기 (0) | 2023.04.16 |
방통대 2022년 2학기 수강 후기 (컴퓨터과학과 3학년 편입) (1) | 2023.04.15 |
Java프로그래밍 : 배열 (0) | 2023.04.15 |