본문 바로가기

전체 글

(25)
Day08 추상 클래스(abstract class) : 완성되지 못한 채로 남겨진 설계도를 의미하며, 인스턴스는 생성할 수 없다. 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 추상 클래스로부터 상속받는 자손클래스는 오버라이딩을 통해 조상인 추상클래스의 추상 메서드를 모두 구현해주어야 한다. 만일 조상으로부터 상속받은 추상메서드 중 하나라도 구현하지 않는다면, 자손클래스 역시 추상 클래스로 지정해주어야한다. 상속이 자손 클래스를 만드는데 조상 클래스를 사용하는 것이라면, 이와 반대로 추상화는 기존의 클래스의 공통부분을 뽑아내서 조상 클래스를 만드는 것이라고 할 수 있다. 인터페이스 : 일종의 추상클래스로 오직 추상 메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 혀용하지 않는다. 인터..
Day07 package : 클래스의 묶음으로, 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 같은 이름의 클래스일지라도 서로 다른 패키지에 존재하는 것이 가능하므로, 다른 개발자가 개발한 클래스 라이브러리의 클래스와 이름이 충돌하는 것을 피할 수 있다. 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다. import문 : 소스코드를 작성할 때 다른 패키지의 클래스를 사용하려면 패키지명이 포함된 클래스 이름을 사용해야 한다. 하지만 매번 패키지명을 붙여서 작성하는것이 불편하기 때문에 import문으로 사용하고자 하는 클래스의 패키지를 미리 명시해주면 소스코드에 ..
Day06 setter 와 getter의 사용 이유 : 객체 데이터를 외붸서 읽고 변경 시 객체의 무결성이 깨질 수 있기 때문 그래서메소드를 통해 데이터를 변경하는 방법을 선호한다. setter : 외부에서 메소드를 통해 데이터에 접근하도록 유도한다.(매개값을 검증해서 유효한 값만 데이터로 저장할 수 있기 때문에) - 이런 역활이 메소드 setter getter : 외부에서 객체의 데이터를 읽을 때도 메소드를 사용 [메소드로 필드값을 가공 후 , 외부로 전달한다]-이런 역활이 메소드 getter 만약 필드 타입이 boolean일 경우, getter는 get으로 시작하지 않고 is 로 시작하는 것이 관례이다. 외부에서 필드값을 읽을 수만 있고,변경하지 못하도록 하려면(읽기전용) getter메소드만 선언하거나 ,set..
Day05 객체 지향의 특성 1.코드의 재사용성이 높다 : 새로운 코드를 작성할 떄 기존의 코드를 이용하여 쉽게 작성할 수 있다. 2.코드의 관리가 용이하다 : 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 3.신뢰성이 높은 프로그래밍을 가능하게 한다 : 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. 클래스와 객체의 차이점 클래스: '객체를 정의해놓은 것' , '객체의 설계도 또는 틀' / 용도는 객체를 생성하는데 사용한다. 객체[object] : '실제로 존재하는 것', '사물 또는 개념' / 기본 원시타입이 아닌 모든 데이터를 객체[참조변수]로 인식한다. 객체는 모든 인스턴스를 대표하는 포..
1주차 예제를 통한 간단한 복습 변수: "단 하나의 값을 저장할 수 있는 메모리 공간." 변수의 초기화 : "변수를 사용하기 전에 처음으로 값을 저장하는 것" // 두 변수의 값 교환하기 package com.pr01; public class VarEx2 { public static void main(String[] args) { int x = 10, y = 20; int tmp = 0; System.out.println("x:" + x + " y :" + y); tmp = x; x = y; y = tmp; System.out.println("x :"+ x + " y:"+ y); } } 상수와 리터럴 : 상수[constant]는 변수와 마찬가지로 '값을 저장할 수 있는 공간'이지만 변수와 달리 한번 값을 저장하면 다른 값으로 변경할 수..
Day04 OOP - [Object Oriented Programing] :객체지향 언어 - 상속 , 캡슐화 , 추상화 개념을 중심으로 점차 발전되었고 1960년대 최초 객체지향 언어인 시뮬라(Simula) 가 탄생하였다. 특징 : 1. 코드의 재사용성이 높다 - 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 2. 코드의 관리가 용이하다 - 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 하지만 코드가 길어지는 단점이 있다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. - 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. ☆ 객체 지향개념에 얽매여서 고민하기 보다는 일단..
Day03 조건문[if,switch문],반복문[for,while,do-while문],배열[array] 중첩 for문으로 간단한 구구단 만들기 예제 public class Sample03 { public static void main(String[] args) { System.out.println(""); for (int a = 2; a Stirng name[]; 배열의 생성 : 생성자 new와 함께 배열의 타입과 길이를 지정해 준다. ex) int[] score; score = new int[5]; 혹은 int[] score = new int[5]; // 배열의 선언과 생성을 동시에 할 수 도 있다. 인덱스[index] : 배열의 요소마다 붙여진 일련번호로 각 요소를 구별하는데 사용된다. ★인덱스는 1이 아닌 0부..
Day2 조건문과 scanner를 이용한 간단한 장학금 지급여부 대상자 코드 짜기 package Workshop; import java.util.*; // java scanner 사용 public class WorkShop2 { public static double getUserInput() { // 여러번 값을 입력할 수 있게 하는 메소드 호출문 Scanner scanner = new Scanner(System.in); //참조타입으로 새로운 변수 저장 Double inputString = scanner.nextDouble(); // 실수타입 형식의 스캐너 변수 저장 return inputString; // 저장된 변수를 리턴 } public static void main(String[] args) { doub..