OOP : object orieted programming
oop 의 핵심은 extends(상속)
def : 자바스크립트의 function.. 메서드
__init__ : 생성자
파이썬은 자바와달리 소멸자(__del)가있음( 자바는 가비지컬렉터가 자동으로 죽여버림)
~스크립트가 붙는다면 인터프린트 언어
브라우저(클라이언트)쪽 언어가 자바스크립트. 서버쪽언어가 자바
파이썬의 멀티리턴
def addsubmuldiv(a,b):
return a+b, a-b, a*b, a/b
sum, sub, mul, div = addsubmuldiv(1, 2)
print(sum)
print(sub)
print(div)
print(mul)
자바는 단일상속
파이선은 다중상속
개 와 새 의 특징을 하나에 받을수잇따.
*파이선은 기본 모두 퍼블릭이고 강제적으로 프라이빗을 만들수있따.
class Dog:
def __init__(self):
self.age = 1
self.bark = "mungmung"
class Bird:
def __init__(self):
self.f_power = 0
self.twitter = "zzack"
class GaeSae(Dog,Bird):
def __init__(self):
Dog.__init__(self)
Bird.__init__(self)
gs = GaeSae()
print(gs.age)
print(gs.bark)
print(gs.f_power)
print(gs.twitter)
파이선은 대부분은 다른언어의 라이브러리 가져와서쓰는데, 대부분이 C++임
C#은 자바랑 문법이 비슷함.
C랑 C++ 은 빠름
JAVA랑 PYTHON은 느림
파이썬의 목표는 C++에서 가져와서 그것만 쓰는데에 목적이있는거임
TensorFlow
그래서 가져오는데에 그 목적이 있기떄문에 파이선은 PRIVATE를 쓸 필요가 굳이 없다.
지금까지 콘솔프로그램에 프린트햇음
콘솔 > GUI[VB, Delphi, (AWT, SWING, SWT 이 셋은 자바안에 들어가잇음)] > 웹버전
마켓플레이스 > windowbuilder 다운(awt, swt를 편하게 쓸수잇는 툴)
java
AWT
package day2;
import java.awt.Frame;
public class GuiTest01 {
public static void main(String[] args) {
Frame f = new Frame();//window의 개념.. 1. 생성
f.setSize(400,400);//2. 사이즈
f.setVisible(true);//3. visible
}
}
JFrame
package day2;
import javax.swing.JFrame;
public class GuiTest02 {
public static void main(String[] args) {
JFrame f = new JFrame();//1.생성
f.setSize(500, 500);//2.사이즈
f.setVisible(true);//3.비지블
}
}
SWT
이클립스도 swt로 만들엇따. 이땐 jface
Panel 이 추가됨
앞의 awt 창과 다르게 그 앞에 패널이 추가로 붙은거임
이벤트 중심의 프로그램으로 바뀌는거임 (GUI가)
*click_btn <이런건 snake 표기법
clickBtn < 카멜표기법
click : 클릭시 (버튼누르고 그 버튼영역안에서 뗐을때의 클릭)
enter : 커서가 버튼안으로
exited : 커서가 버튼밖으로 빠져나가는순간
pressed : 버튼을 눌렀을때
released: 버튼을 뗐을때
package day2;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class GuiTest03 extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GuiTest03 frame = new GuiTest03();//1. jframe생성 (생성자발동)
frame.setVisible(true);//3. 비지블
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GuiTest03() {//생성자
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);//사이즈
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lbl = new JLabel("Good Morning ^_^");
lbl.setFont(new Font("Arial", Font.BOLD, 13));
lbl.setForeground(Color.BLUE);
lbl.setBounds(35, 28, 135, 15);
contentPane.add(lbl);
JButton btn = new JButton("change night");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(lbl.getText()=="Good Morning ^_^") {
lbl.setText("Good Evening =_=");
}else {
lbl.setText("Good Morning ^_^");
}
}
});
btn.setBounds(33, 53, 137, 74);//크기와 위치정해서
contentPane.add(btn);//그 패널에 딱 붙여주는거임
}
}
package day2;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Font;
import java.awt.Color;
public class GuiTest04 extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GuiTest04 frame = new GuiTest04();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GuiTest04() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lbl = new JLabel("1");
lbl.setFont(new Font("Arial", Font.PLAIN, 20));
lbl.setBounds(27, 40, 57, 15);
contentPane.add(lbl);
JButton btnIncrease = new JButton("Increase");
btnIncrease.setForeground(Color.RED);
btnIncrease.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
lbl.setText(Integer.parseInt(lbl.getText())+1+"");
}
});
btnIncrease.setBounds(140, 65, 94, 64);
contentPane.add(btnIncrease);
JButton btnDecrease = new JButton("decrease");
btnDecrease.setForeground(Color.BLUE);
btnDecrease.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
lbl.setText(Integer.parseInt(lbl.getText())-1+"");
}
});
btnDecrease.setBounds(27, 65, 101, 64);
contentPane.add(btnDecrease);
}
}
1. JtextField (tf)
로 같은 문제
package day2;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class GuiTest05 extends JFrame {
private JPanel contentPane;
private JTextField tf;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GuiTest05 frame = new GuiTest05();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GuiTest05() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
tf = new JTextField();
tf.setText("1");
tf.setBounds(133, 36, 116, 21);
contentPane.add(tf);
tf.setColumns(10);
JButton btnDecrease = new JButton("decrease");
btnDecrease.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
tf.setText(Integer.parseInt(tf.getText())-1+"");
}
});
btnDecrease.setBounds(39, 81, 97, 23);
contentPane.add(btnDecrease);
JButton btnIncrease = new JButton("increase");
btnIncrease.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
tf.setText(Integer.parseInt(tf.getText())+1+"");
}
});
btnIncrease.setBounds(219, 81, 97, 23);
contentPane.add(btnIncrease);
}
}
2. jtextField (tf1) label "+"(lbl) jtextField (tf2) btn "=" jtextField (tf3)
package day2;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class GuiTest06 extends JFrame {
private JPanel contentPane;
private JTextField tf1;
private JTextField tf2;
private JTextField tf3;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GuiTest06 frame = new GuiTest06();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GuiTest06() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
tf1 = new JTextField();
tf1.setBounds(28, 61, 46, 21);
contentPane.add(tf1);
tf1.setColumns(10);
JLabel lbl = new JLabel("+");
lbl.setBounds(106, 64, 15, 15);
contentPane.add(lbl);
tf2 = new JTextField();
tf2.setBounds(146, 61, 46, 21);
contentPane.add(tf2);
tf2.setColumns(10);
JButton btn = new JButton("=");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
tf3.setText(Integer.parseInt(tf1.getText())+Integer.parseInt(tf2.getText())+"");
}
});
btn.setBounds(227, 60, 39, 23);
contentPane.add(btn);
tf3 = new JTextField();
tf3.setBounds(293, 61, 56, 21);
contentPane.add(tf3);
tf3.setColumns(10);
}
}
3.tf1 에서(lbl1) tf2 까지합은(btn) tf3
package day2;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class GuiTest07 extends JFrame {
private JPanel contentPane;
private JTextField tf1;
private JTextField tf2;
private JTextField tf3;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GuiTest07 frame = new GuiTest07();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GuiTest07() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
tf1 = new JTextField();
tf1.setBounds(34, 89, 72, 21);
contentPane.add(tf1);
tf1.setColumns(10);
JLabel lbl = new JLabel("에서");
lbl.setBounds(143, 92, 57, 15);
contentPane.add(lbl);
tf2 = new JTextField();
tf2.setBounds(194, 89, 72, 21);
contentPane.add(tf2);
tf2.setColumns(10);
JButton btn = new JButton("까지의 합은");
btn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int a = Integer.parseInt(tf1.getText());
int b = Integer.parseInt(tf2.getText());
int sum = 0;
for(a=a; a<=b; a++) {
sum+= a;
}
tf3.setText(sum+"");
}
});
btn.setBounds(82, 130, 125, 23);
contentPane.add(btn);
tf3 = new JTextField();
tf3.setBounds(243, 131, 116, 21);
contentPane.add(tf3);
tf3.setColumns(10);
}
}