목록전체 글 (174)
The Debugging Chronicles : "코드의 미학"
자바의 추상화 자바 웹 개발을 하다보면 JAVA가 아닌 언어를 사용할 확률이 점점 높아집니다.JAVA를 기반으로한 회사마다의 새로운 언어 or 프레임워크가 많다 그 회사에서만 사용하는 언어 혹은 기술이 있다만약 JAVA만 공부하면, 다른 언어를 만났을 떄 ….. 어 안배워서 모른다,… 라는 이야기가 나오면 개발자 인생 끝…. 세상 모든 JAVA기반 언어들이 공통으로 하는 모토 혹은 기준 같은게 있는데, 그게 바로 “추상화”개념을 반드시 가지고 있다는 점 그래서 웹 개발 책이나 인강을 보면 잘안나올 수도 있다, 당장 안쓰긴함 >>> 세상 모든 언어들이 이 “추상화”개념을 바탕으로 뭔가 한다는 점…. ——————————————————————————— 추상화의 역사 네모 클래스, 원 클래스, 세모 클래스가..
06-1 오라클 함수함수란?x와 y 변수가 존재하고 x 값이 변하면 그 변화에 따라 어떤 연산 또는 가공을 거쳐 y값도 함께 변할 때 이 y를 함수라고 한다 오라클 함수에서는 특정 결과 데이터를 얻기 위해 어떤 값이나 데이터를 입력하는데 그 값에 따라 고공 또는 여산의 과정을 거쳐 결과 값이 나온다. 즉 오라클 함수는 특정한 결과 값을 얻기 위해 데이터를 입력할 수 있는 특수 명령어를 의미 오라클 함수의 종류내장 함수 built-in-function사용자 정의 함수 user-defined -function 내장함수의 종류입력 방식에 따라 데이터 처리에 사용하는 행이 나뉜다. 데이터가 한 행씩 입력되고 입력된 한 행당 결과가 하나씩 나오는 함수를 단일행 함수 single - row function 여러행이..
package class05;class Shape { String name; double area; String color; Shape(String name) { this(name,"검정"); } Shape(String name,String color) { this.name=name; this.color=color; this.area=0.0; } void draw() { System.out.println(this.color+"색 "+this.name+"모양 넓이 : "+this.area); } void setArea() { System.out.println("Shape에서 호출한 setArea()"); }}class Circle extends Shape { int radius; static f..
package class02;// [상속]// 부모 클래스(상위 클래스)의 코드를// 자식 클래스(하위 클래스)가 전부 '재사용' 할 수 있다.// "유지보수 용이성 극대화"// 코드를 잘게잘게 잘라야함 == 모듈화(컴포넌트화,함수화)// --->> 코드 재사용성 증가// 오류 발견시 수정을 적게함// --->> 오류의 파급효과 절감// 결과를 다양하게 추출할수있음// 개발시간 단축,개발비용 축소class Point { int x; int y; Point(int x,int y){ this.x=x; this.y=y; System.out.println("부모 생성자 호출됨"); } void printInfo() { System.out.println("("+this.x+","+this.y+")");..
package class01;//원// 반지름// 넓이 = 반지름*반지름*PI(3.14)class Circle{ String name; int radius; // 반지름 double area; // 넓이 // final == 변수값 고정 == 상수화 static final double PI = 3.14; //원주율 // 멤버변수 필드 속성 attribute property // 멤버변수 초기화 // 생성자에서 초기화 // static 클래스변수 공유자원 // 클래스에서 초기화 //객체 c1의 값 을 변경해도, // 객체 c2의 값에 영향 xxx ==> "객체와 무관하게" static // 주인이 객체 x 클래스 o Circle (String name , int radius){// this.PI = ..
package class01;class Product { int num; //PK String name; int cnt; int price; //생성자 오버로딩 Product(int num, String name){ this.num = num; // 시스템에서 부여하는 값 ->외부에서 가져와야함 this.name = name; //상품명 this.cnt = 0; //재고; this.price = 0; //가격; } Product(int num, String name,int cnt, int price){ this.num = num; // 시스템에서 부여하는 값 ->외부에서 가져와야함 this.name = name; //상품명 this.cnt = cnt; //재고; this.price =..
package class06;// 특정 멤버변수의 값을 반드시 넣도록 "강제"하고 싶을 때// "강제" : 개발할 떄 강제하다는 좋은것 , 지정하는 것, 오더를 내리는 것.// 실수를 줄여준다// 멤버변수의 값을 '강제'하고 싶을 때는 // == 생성자를 선언(정의) 하면된다class Pokemon{ String name; int level; int exp; Pokemon(String name){ // 강제할 항목 // this 생략하지 않는다. this.name=name; // 멤버 변수 // 외부 변수 // 외부에서 받아온 name 값을 멤버 변수 name에 저장 this.level = 5; this.exp = 0; // 모든 멤버 변수 생성자 안에서 초기화를 직접 작성하는 것을..
참조에 의한 호출 call By referencepackage class06;public class Test02 { public static void test(int[] datas) { datas[0]=0; } public static void main(String[] args) { // new 연산자 : 개발자 메모리 영역(heap)에 공간을 만들어줘. int[] datas = new int[3]; for(int i =1; i Call by Value (값에 의한 호출)Java는 기본적으로 'Call by Value' 방식을 사용하고 있다.메서드로 변수를 전달할 때 값이 복사되어 전달되는 방식을 의미한다. 메서드에 전달된 값은 인자를 복사해서 보낸 것이므로 메서드 내에서 변경..