본문 바로가기

분류 전체보기

(392)
1. 웹 개요 들어가며 아주 오랜만이다. 빨리 휴학하고 싶다. 대학 근처 땅 한 번 밟아보고 2학년이 됐다. 뭐가 어떻게 돌아가는 지도 모르겠고, 나 조차도 정신이 없어서 관심을 가지고 싶어도 정신적으로 너무 지쳐있다. 그래도 자기개발을 멈추면 도태되고 나 또한 원치 않기 때문에 공부한다, 자의에 의해서. 아무튼 자의라고. 웹의 기본 목적과 구성 웹의 기본 목적은 한 컴퓨터에서 만든 문서(doucment)를 다른 컴퓨터에서 쉽게 볼 수 있도록 하는 것이다. 특별히 이 문서를 '웹 문서'라고 부른다. 이 목적을 달성하기 위해 인터넷으로 전 세계의 컴퓨터들을 거미줄처럼 연결하고 웹 문서를 주고받을 수 있도록 시스템을 만들었다. 이를 WWW(World Wide Web), 즉 간단히 줄여 웹(Web)이라고 한다. 웹은 컴퓨터..
[Java] 15.03 - instanceof 연산자 들어가며 끝으로 유용하게 사용할 수 있는 상속과 관련된 연산자 하나를 소개하고자 한다. 이 연산자의 피연산자는 참조변수와 클래스의 이름이다. instanceof 연산자의 기본 연산자 instanceof는 참조변수가 참조하는 인스턴스의 '클래스'나 참조하는 인스턴스가 '상속하는 클래스'를 묻는 연산자이다. 예를 들면 다음과 같이 문장을 구성할 수 있다. if (ca instanceof Cake) .... 위에서 ca는 참조변수이고 Cake는 클래스 이름이다. 그리고 ca가 참조하는 인스턴스가 Cake의 인스턴스이거나 Cake를 상속하는 클래스의 인스턴스이면 true를, 그렇지 않다면 false를 반환한다. 관련하여 다음 예제를 보자. class Cake {} class CheeseCake extends C..
[Java] 15.02 - 메소드 오버라이딩 들어가며 메소드 오버라이딩은 상위 클래스에 정의된 메소드를 하위 클래스에서 다시 정의하는 것을 뜻한다. 이렇듯 메소드 오버라이딩이 문법적으로는 단순하지만 이것이 가져다주는 이점은 결코 가볍지 않다. 상위 클래스의 참조변수가 참조할 수 있는 대상의 범위 앞서 다음과 같이 SmartPhone 클래스가 MobilePhone 클래스를 상속하는 형태로 클래스를 디자인한 바 있다. class SmartPhone extends MobilePhone {....} 따라서 다음과 같이 문장을 구성할 수 있다. SmartPhone phone = new SmartPhone("010-3333-6666", "Nougat"); 그런데 다음과 같이 MobilePhone형 참조변수가 SmartPhone 인스턴스를 참조할 수도 있다. ..
[Java] 15.01 - 상속을 위한 두 클래스의 관계 들어가며 두 클래스를 상속의 관계로 맺는 것이 도움이 되는 상황이 있고 도움이 되지 않는 상황이 있다. 그렇다면 언제 두 클래스를 상속의 관계로 맺어야 하는가? 기본적으로 'IS-A 관계'라는 것이 성립해야 상속의 후보로 고려할 수 있다. 상속의 기본 조건인 'IS-A 관계' 상속이 갖는 문법적 특성을 통해서 상위 클래스와 하위 클래스를 다음과 같이 이야기 할 수 있다. "하위 클래스는 상위 클래스의 모든 특성을 지닌다." "거기에 더하여 하위클래스는 자신만의 추가적인 특성을 더하게 된다." 이러한 '상속'의 특성을 현실 세계에서도 찾아볼 수 있다. 대표적인 예가 다음과 같다. 아래에서 모바일폰은 통화의 기능만 담겨있는 feature phone을 의미한다. 모바일폰 vs 스마트폰 '모바일폰'이 상위 클래..
[Java] 14.02 - 클래스 변수, 클래스 메소드와 상속 들어가며 static 선언이 붙는 크래스 변수와 클래스 메소드도 상속의 대상에 포함이 되겠는가? static 선언이 갖는 의미를 떠올리고 논리적으로 접근하면 이 질문에 스스로 답을 할 수 있다. static 선언이 붙는 '클래스 변수'와 '클래스 메소드'의 상속 앞서 공부한 클래스 변수와 클래스 메소드의 특징을 정리하면 다음과 같다. 인스턴스의 생성과 상관없이 접근이 가능하다. 클래스 내부와 외부에서(접근 수준 지시자가 허용하면) 접근이 가능하다. 클래스 변수와 클래스 메소드가 위치한 클래스 내에서는 직접 접근이 가능하다. 즉 클래스 변수와 클래스 메소드는 인스턴스에 속하지 않는, 딱 하나만 존재하는 변수와 메소드이다. 따라서 상속의 대상이 아니다. 예를 들어서 다음 클래스를 보자. class Super..
159 : 배열1 - 형성평가A Java 1234567891011121314151617181920212223242526import java.util.Scanner; public class Main { public static void main (String[] arg) { Scanner sc = new Scanner(System.in); final int LIMIT = sc.nextInt(); int[] num = new int[LIMIT]; int temp = 0; for (int i=0; i
158 : 배열1 - 형성평가9 Java 12345678910111213141516171819202122232425262728import java.util.Scanner; public class Main { static final int LIMIT = 100; public static void main (String[] arg) { Scanner sc = new Scanner(System.in); int[] num = new int[LIMIT]; int count = 0; for (int i=0; i
157 : 배열1 - 형성평가8 Java 1234567891011121314151617181920212223242526272829import java.util.Scanner; public class Main { static final int LIMIT = 100; public static void main (String[] arg) { Scanner sc = new Scanner(System.in); int[] num = new int[LIMIT]; int sum = 0, count = 0; double avg = 0; for (int i=0; i
156 : 배열1 - 형성평가7 Java 1234567891011121314151617181920212223import java.util.Scanner; public class Main { static final int LIMIT = 100; public static void main (String[] arg) { Scanner sc = new Scanner(System.in); int[] num = new int[LIMIT]; int min = 1000, max = -1000; for (int i=0; i
155 : 배열1 - 형성평가6 Java 123456789101112131415161718192021222324252627282930313233import java.util.Scanner; public class Main { public static void main (String[] arg) { Scanner sc = new Scanner(System.in); char[] jungol = {'J', 'U', 'N', 'G', 'O', 'L'}; char ch = sc.nextLine().charAt(0); switch (ch) { case 'J': System.out.print("0"); break; case 'U': System.out.print("1"); break; case 'N': System.out.print("2"); br..
154 : 배열1 - 형성평가5 Java 1234567891011121314151617181920import java.util.Scanner; public class Main { static final int LIMIT = 6; public static void main (String[] arg) { Scanner sc = new Scanner(System.in); double[] weight = new double[LIMIT]; double avg = 0; for (int i=0; i
153 : 배열1 - 형성평가4 Java 12345678910111213141516171819202122232425262728import java.util.Scanner; public class Main { static final int LIMIT = 100; public static void main (String[] arg) { Scanner sc = new Scanner(System.in); int[] num = new int[LIMIT]; for (int i=0; ; i++) { num[i] = sc.nextInt(); if (num[i] == -1) { if (i == 0) break; else if (i == 1) System.out.print(num[i-1]); else if (i == 2) System.out.print(..