728x90

<클래스와 인스턴스 & 객체지향 이후 공부할 것>

  1. 상속(inheritance)
  2. 인터페이스(Interface)
  3. 패키지(package)

 

1.상속inheritance

class Parent{
		public void method1() {
			// ...
		}
}

Q.위에서 저 클래스를 직접 수정할 수 없거나 변경하지 말아야하는 상황에서 method2()를 추가하고 싶다면?

A.저 클래스 전체를 카피해서 이름 다른 클래스로 해서 method2()를 추가

이 방법은 class parent의 method1의 코드 개선, 버그 해결 등을 하게 되면 이 method1을 카피한 수많은 모든 코드를 다 수정해야함. 일 산더미...?

 

이 문제 개선을 위해 자바에서 제공하는 기능이 상속

extends를 붙여서 상속표시

class Child extends Parent{
		public void method2() {
				// ... 
		}
}

Child라는 클래스에는 실제로는 method1이 구현되어 있지 않지만, 상속 받았기에 class Parent에 있기에 class Child에서도 사용 가능해짐

 - class parent 코드가 수정되면, 동시에 다른 자식 클래스에도 다 같이 수정된다

 

 

2.인터페이스(Interface)

interface contract {
		public String method1(String param);
		public int method2(int param);
}

원래 인터페이스에는 메소드의 이름, 파라미터와 리턴값의 형식은 적으나 실제 내용은 적지 않는다

 

class Concreate1 implements Contract {

}

위 코드 의미

Concreate1 이라는 클래스Contract 라는 인터페이스에 적혀있는 메소드들의 형식을 구현했다 or 구현해야한다는 의미

이 상태로 Concreate1 클래스를 컴파일하면 컴파일조차 안된다

 - 규칙위반 때문

 - Contract에 적혀 있는 메소드들을 정의해야한다는 규칙을 어겼기 때문

 

implements에 contract를 적어놓게 되면 class Concreate1은 interface의 contract적혀있는 형태의 메소드구체적으로 구현해야하는 책임을 갖는다

class Concreate1 implements Contract{
		public String method1(String param) {
				return "foo";
		}
		public int method2(int param) {
				return 1;
		}
}
// 클래스 콘크리트1 안에 내용이 메소드1의 내용으로 채워짐

 

 

마찬가지로 class Concreate2

Concreate1Concreate2서로 다른 클래스이지만 확신할 수 있는 것은,

이 클래스들은 반드시 contract에 약속되어 있는 정의되어있는 형태의 멤버들을 구현하고 있을 것이라는 것. 일종의 무언의 약속

 

3.패키지(package)

클래스 이름은 같지만 기능이 다른 두 클래스가 존재할 수 있다

ex)서로 다른 디렉토리에 있는 경우, 한 컴퓨터 안에 같은 이름의 파일이 여러개 존재할 수 있는 것

 

클래스도 서로 다른 패키지에 묶여있으면 같은 이름의 클래스가 공존 가능

많아진 클래스정리정돈의 도구로써 사용되는 것이 패키지

패키지보다 더 큰 정리정돈의 도구는 자바에서는 없다

 

 

 

 

 

728x90
반응형
728x90

 

 

JAVA1 - 13.1. 자바 문서 보는 법 - API vs UI

 

자바가 기본으로적으로 내장하는 기능들을 '기본 라이브러리' 부름

  ex)System, Date, Math, PrintWriter

 

라이브러리라는 부품을 이용해서 나의 프로그램을 만드는

 

API(Application Programming Interface)

 여기서

Programming 시간에 따라서 실행된다는 시간이 강조된 표현이고,

Application 자바가 기본적으로 제공하는 부품들을 응용(application)해서 만든다라고 하는 응용에 방점이 찍힌 표현.  자바를 응용해서 프로그래밍적으로 실행되는 프로그램을 만들기 위해서 사용해야되는 조작장치들, 조작방법을 API(Application Programming Interface)라고 부른다

 

 

사람이 우리가 만든 프로그램을 조작하기 위해서 조작장치들(web이면 link, desktop app이면 button, 커맨드라인 시스템이면 argument ) UI(User Interface)라고 부름

 

 

동시에 사람이 사용하지 않을 도 있다. 우리가 만든 프로그램이 사람이 아닌 부품으로써 프로그램이 사용할 경우.

우리의 프로그램이 우리의 프로그램을 사용하는 완제품에 해당되는 프로그램에게 API 제공해야한다. 완제품에 해당하는 프로그램도 다른 프로그램의 부품이   있으니 API 해야한다

 

 

 


 

 

JAVA1 - 13.2. 자바 문서 보는 법 - 패키지,클래스,변수,메소드

API의 사용방법을 스스로 알아낼 수 있는 방법을 배워보자

 

 

All Classes탭

일단 클래스는 하나의 프로그램이라고 생각해둬라

수학과 관련된 작업을 해야하는데 직접 만들기 싫다면 API문서에서 검색

Math 검색 - All classes에서 Math 클릭

 

 

 

 

패키지(Package)

정리정돈을 위한 도구

많은 클래스들 있고 이들의 이름이 겹치면 충돌

만약 내가 똑같은 math라는 이름의 클래스를 만들고 싶으면 충돌하기에 있을 수가 없으니 이런 문제를 해결하기 위한 도구가 패키지

위는 java.lang 속한 math클래스고 내가 다른 패키지 이름으로 math라는 클래스를 만들 수도 있는

 java.lang 안에는 Math 외에도 String, System,Thread,float 등등 있다

 

 위의 class math에서 java.lang패키지를 좌측상단 package란에서 찾아보면 있는 것을 있다

패키지는 비슷한 성격의 클래스들을 모아서 이름을 붙인다

 

 

클래스(Class)?

서로 연관된 변수와 메소드를 모아서 거기에 이름을 붙인

class Math 안에 abs, min, max, floor, ceil 등의 메소드가 여기에 속함

패키지와 클래스, 메소드,변수의 상관관계도

 

 

728x90
반응형
728x90

JAVA1 9.1. 프로그래밍이란 무엇인가?

 

Programming 사전 의미

음악회에서 공연될 곡들의 목록대로 순차적으로 연주되는 것처럼, 시간의 순서에 따라서 공연이 진행되는 것들을 프로그램이라고 칭한 듯함.  이후로 시간의 순서에 따라서 어떤 것들이 일어나는 것을 프로그램이라고 부르고 있다.

 

어떤 일을 하기 위해서 필요한 각각의 작업들이 시간의 순서에 따라서 실행되게 하는 것을 automation 자동화를   있게 되는 

 

프로그래밍을 하는 이유  자동화처리를 하기 위함

그리고  자동화 하는 방법을 배우는 시간이  강의

 

 

 

 

JAVA1 9.2. 프로그램 만들기- IoT 라이브러리 설치하기

 

프로그래밍시에 하나부터 열까지  만들지 않는다

누군가 만들어 놓은 프로그램을 사용하여  빠르게   쉽게 만드는데 누군가 만들어 놓은 프로그램을 라이브러리라한다

 

※ 다른 사람이 만든 코드를 나의 프로젝트에 추가시키는 방법  

가장 쉬운 방법은 해당 폴더를 나의 프로젝트 폴더에 포함시키는 

추가하고 나면, 이클립스 패키지 익스플로러에 보인다

 

 

JAVA1 9.3. IOT 프로그램 만들기

 

다른 사람이 만든 코드(라이브러리) 사용하는 방법

 

org.opentutorials.iot.Elevator

org 패키지 밑에 opentorials 패키지 밑에 iot 패키지 밑에 Elevator 호출할려고함.

 

Elevator라는 클래스를 불러올려고 한다

다쓰면 기니까 쓸이기 위해 import 사용해보자

import org.opentutorials.iot.Elevator; 

public class practice02 {
	public static void main(String[] args) {
    
    }
}

import org.opentutorials.iot.Elevator; 라고 public class 클래스명 위에 써두면

class 코드 안에 Elevator 써도 

 

 

// Elevator call

Elevator myElevator = new Elevator("JAVA APT 507");

Elevator라는 데이터타입의 변수명myElevator가진 변수

myElevator.callForup(1); // 1층으로 엘리베이터 보내라고 명령

import org.opentutorials.iot.Elevator; 

public class practice02 {
	public static void main(String[] args) {
    
	// Elevator call
	Elevator myElevator = new Elevator("JAVA APT 507"); // Elevator라는 데이터타입의 변수명myElevator가진 변수
	myElevator.callForup(1); // 1층으로 엘리베이터 보내라고 명령
    }
}

 

// Security off

엘베와 마찬가지로 코드  위에 임포트

import org.opentutorials.iot.Security;

Security mySecurity = new Security("JAVA APT 507"); // 누구의 시큐리티인지 알리기해 ()작성

mySecurity.off(); // 메소드

 

// Light on

*Light라고 쓰면 이클립스가 추천단어를 보여주는데 org….이거 누르면 알아서 위에 import 추가해주고 Lighting 쓰게 해준다.

Lighting hallLamp = new Lighting("JAVA APT 507 / Hall Lamp"); // 자바 아파트 507호의 홀램프라는 의미

hallLamp.on();

 

Lighting floorLamp = new Lighting("JAVA APT 507 / floor Lamp");

floorLamp.on();

 

 

 관리가 용이한 코드

String id = "JAVA APT 507";  넣어서 한번에 변수로 관리

 

 

728x90
반응형
728x90

[Python] 

022.모듈 불러오기 : import? from? 차이

 

▷모듈(Module)이란?◁

누군가 만들어놓은 파이썬 파일(.py)

모듈 안에는 함수 뿐만 아니라, 변수나 클래스도 포함되어 있으며 끌어다 쓸 수 있다

 

패키지(Pakage)란?

모듈(Module)을 모아둔 폴더

 

 

import & from

import 단일 사용 : 모듈명.함수명()

                        (모듈명=파일명=라이브러리)

from + import : 함수명()

※ import는 현재 디렉토리나 파이썬 라이브러리에 저장된 디렉토리에 있는 파일만 불러올 수 있음

 

패키지 사용시에 import

import 패키지명.모듈명

import 패키지명.하위 패키지명

 

 

 

728x90
반응형

+ Recent posts